柔軟に働き方を選ぶ時代に必要なこと >>

Accessで在庫管理をしよと考えています。

そこで、Accessのソフトとしての実力が気になります。
前提として、Accessのインストールしているパソコンの実力は度外視します。

商品の入庫と出庫の差から、在庫を知りたいのですが、この入庫と出庫が数万件(ファイルは2G以内)とした場合でもちゃんと処理されるのでしょうか?

あんまり、Accessが信用できないので(DBのくせに結果が出るまでに待たされる等が起こるのではと考えています。)、”在庫のテーブル”を作り入出庫のたびに”在庫テーブル”を更新しようかと考えています。

将来的には、DBをMysqlか何かに変更して、Accessは入力や確認だけに使おうと考えています。

いままでに、Accessで大量のデータを扱ったことある方の、経験などがありましたらお願いします。

以前、徹夜で仕事しているときにエクセルが固まり、データがパーになり、それ以来officeは信用しておりません。
(おかげでコマメに保存する習慣がつきました。)

このQ&Aに関連する最新のQ&A

A 回答 (3件)

最近の物は使っていないので、数年前の経験上の話です。


PCの性能はCeleronの500MHz位の物で、OSはWindows2000、Accessは2000です。

>この入庫と出庫が数万件(ファイルは2G以内)とした場合でもちゃんと処理されるのでしょうか?

私の経験上では、問題無しです。
数万件のレコードを扱っていましたが、当時のパソコンでも、
待たされる事はほとんど無かったです。
多少時間が掛かったとしても、ちゃんと処理されます。

数十万単位のレコードまでは、経験がありますが、
限界を感じた事(処理が極端に重くなる等)はありませんでした。
(レコード数が増えると、それなりに重くはなりますが・・・)

もちろん、テーブルの設計や、処理の内容によりますので、一概には言えません。

処理の内容によっては、数万件でも、フリーズ状態です。(^^;
(DLookup関数などを多用した、重いなクエリなど・・・)

まぁ、この辺りは、作る側の腕次第ですね・・・

入庫、出庫の集計なら、基本的な集計クエリで処理出来ますので、
数万件程度なら全く問題ないと思います。


>在庫のテーブル”を作り入出庫のたびに”在庫テーブル”を更新しようかと考えています。

この件に関しては微妙ですね・・・
データベース理論では、入庫、出庫から計算できる、在庫は、
テーブルを持たず、毎回計算するのが基本となります。

入庫、出庫、在庫のテーブルを矛盾無く更新するには、
トランザクションを管理する必要があり、高度な内容になります。
http://www.serpress.co.jp/access/vba028.html

集計時間は短縮されるかもしれませんが、
それを実現するためのシステムは、かなり複雑になります。
デメリットも多いですよ。


>将来的には、DBをMysqlか何かに変更して、Accessは入力や確認だけに使おうと考えています。

基本的には賛成しますが、商用利用のMySQLはライセンスに関して注意が必要です。
PostgreSQLの方が商用利用には向いています。(ライセンスの面で)

両者の違いは、下記など参考にどうぞ。
http://www.thinkit.co.jp/free/article/0603/10/1/


>それ以来officeは信用しておりません。

officeに限らず、過信は禁物ですよ。
HDDが丸ごと壊れる事もありますから。(私は経験あります・・・(^^;)
こまめな保存、定期的なバックアップは基本ですね。
    • good
    • 0
この回答へのお礼

経験に基づくご意見ありがとうございました。

>多少時間が掛かったとしても、ちゃんと処理されます。
エクセルと同じように、表示されるまでに砂時計が出て待たされるのでしょうか?
私が試した範囲では、データが少ないのですぐに表示されるので、時間がかかる処理の状態がイメージできません。

>データベース理論では、
今回の答えで一番参考になりました。
そのようなものがあるとはしらなかったので、どのようなテーブルを作ればいいのか迷っていました。
入出庫から在庫数を出すのには、どのようなクエリを作ればいいのかわからないので、更新のたびに在庫数を変更する方が作るのが簡単かな?と考えておりました。

>トランザクションを管理する必要があり
入出庫ではトランザクションは必要ないのでしょうか?
今回は、サンプルとして作っているので、トランザクションも試したいと考えています。

>HDDが丸ごと壊れる事もありますから。(私は経験あります・・・(^^;)
私のパソコンも6年目に突入しているので、このような話を聞くといつも不安になります。
新しいのを買う余裕もないし、いまいちビスタを買う気もしないので(まだいい評判を聞かないので)もう少しこのパソコンにはがんばってほしいです。

お礼日時:2008/01/03 15:06

>エクセルと同じように、表示されるまでに砂時計が出て待たされるのでしょうか?



Accessのファイルを開く、フォームを表示する、
フォームでデータを追加する、等の処理は、
データ全体にアクセスする訳ではないので、
データの量が増えても、掛かる時間は殆ど変化しません。

データの量で重くなるのは、データ全体を集計するような処理です。

クエリで集計し、その結果をレポートで出力するような場合、
集計に時間が掛かれば、レポートを開いてから表示されるまで、砂時計です。

(数万件程度の基本的な集計なら、待つことは殆ど無いと思いますが・・・)

------------------------------------------------------------
>どのようなテーブルを作ればいいのか迷っていました。

データベースを本格的に扱うなら、「正規化」の勉強は必須です。

取り合えず、下記が分かりやすいかな。
http://www.kogures.com/hitoshi/webtext/db-seikik …

クエリに関しては、最初はAccessのクエリデザイナで十分ですが、
クエリデザイナには限界があります。
SQL文を使いこなせれば、更に応用の幅が広がります。

データベースの基本ですので、この辺りはWebの情報だけではなく、
入門書など購入して頂いて、しっかりと学ばれた方が良いと思います。

基礎知識の有無で、出来上がるシステムの性能が、大きく左右されます。

もし、数万件のレコードで、「Accessが重くて、使えない」となれば、
それはAccessの限界ではなく、利用者の勉強不足が原因だと思います。(^^;

------------------------------------------------------------
>入出庫ではトランザクションは必要ないのでしょうか?

取り合えず、簡単に説明します。
トランザクションが必要なのは、複数のテーブルを更新する場合です。

例えば、入庫・出庫・在庫のテーブルがあった場合は、
入庫を更新する時には、在庫も更新する必要があります。

入庫を更新した後、トラブルで停止、在庫が更新出来なかった。
と、言う場合は、データに不整合が生じます。

トランザクションは、こういう不整合を防ぐためのものです。
こちらも、書籍等でしっかりと学んで下さい。
    • good
    • 0
この回答へのお礼

いろいろアドバイスありがとうございます。
アドバイスの通り、書籍等で一から学びたいと思います。

お礼日時:2008/01/04 15:13

数万件は微妙ですね。


データの入出力が繰り返されるとごみの溜まり方も半端ではないですし。
処理は問題ないレベルだと思います。(処理時間は別にして)
毎日バックアップ(エクスポート)しておけば、とりあえずの保証もありますし。
    • good
    • 0
この回答へのお礼

ありがとうございます。
>数万件は微妙ですね。
これは過去の経験からだと思うのですが、その辺をおしえていただけないでしょうか?
よろしくお願いします。

お礼日時:2008/01/03 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング