![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
メニューバーについては他の方のご回答にあるとおりです。
その方法で標準モジュールに書いたプログラム(Functionプロシージャのみ)をメニューボタン化することもできます。
>LAN上で使いたいので
一般的には「ファイルサーバに置くデータのみのmdb(実テーブルのみ)」を作成し、それを「リンクテーブル」にて覗きに行く「クライアントPC専用のプログラム専用mdb(実テーブルなし。リンクテーブルのみ+クエリ、フォーム、レポート、VBA、など)」と、2種類作ります。
ただAccessの場合、同時アクセスに弱いので、原則は
・サーバー×1、
・クライアント×10程度、
・サーバーへの同時アクセスが瞬間でも2接続以上増えない。できれば1。
という状況内で使用したほうがよいと思います。
でないとファイルが壊れてデータが消える可能性があるからです。
・連結フォームでの追加・修正・削除をしている間に、以下の事をしない。
これもデータ破損・消失を防ぐためです。
・大量データのループ処理
・大量データの置換
・大量データの更新クエリ
・大量データの追加クエリ
・複雑で20秒以上かかるような選択クエリなどを
できるだけ営業中などにはしないようにします。
5、6台が同時に(10台同時でもOKかも)1行ずつ追加・編集等をするのならそれほど問題は無いと思いますが、そこへ大量処理(10秒以上の長時間かかる処理。特に更新クエリ、大量の通常の置換など、何らかの書き込む処理をするもの。)をはさむとファイルが壊れることがあります。
壊れても大丈夫なように使うには、こまめなバックアップしかありません。
最低限前日までのバックアップを取ることと、当日のデータを定期的に他のmdbに吸込むことです。
自動吸込みようのmdbを作って、手動で動かすかタスクなどで自動で動かすかすればよいと思います。
(当日以外のデータのバックアップはできれば前々日までのバックアップもとておくと良いと思います。)
余裕のあるときにバックアップからテキストファイル出力もしておくとなお良いと思います。(大量データのファイルの大量データのテーブルだけ)
※安易にサーバーmdbのテーブルをソースとした連結フォームをつくらにほうがいいかもしれません。込み入った処理をするなら非連結フォームを使ったほうが良い場合もあります。
そのほか、閲覧のみなら連結フォームでもあまり問題は無いので更新などを一時テーブルなどを使用して一括送信するとよいかもしれません。
サーバに2台目以降が接続したときに動作が極端に遅くなることがありますが
その際は、サーバーデータにダミーテーブルを作ってVBAでそのリンクテーテーブルに接続しておくか、以下のWebページをご参考に。
http://support.microsoft.com/kb/838670/ja
([ACC2003] 複数のユーザーでリンク テーブルにアクセスするとパフォーマンスが落ちる)
Accessは大量データをサーバから読み込んで処理するので、データ件数が少ないうちはよいのですが、例えば10数万件以上のデータがサーバにある場合、場面によってはメモリをむちゃくちゃ使います。
LANの回線は最低限100BASETを使ったほうがいいです。
データが十万件を超え、かつ、PC台数がそれなりに多いと10BASETではかなりきついです。破損しやすくなります。
1000BASETと100BASETではHDDがボトルネックになるのかなんなのか、それほど処理速度がかわりませんが、LANアダプタのドライバの出来が悪いときもmdbが壊れることがあります。
mdb破損がどうしてもおさまらないときはネットワーク、HDDを疑います。
またクライアントのメモリは十分に空きを作ってください。
10数万件以上のデータを処理したいならAccessだけで80MB以上は見といたほうがいいです。(クライアントでmdbを1、2個開いたとき)
IEやFAXソフトなどもメモリもそれ以外に必要なので、私は30万件を超えるようなデータをサーバ越しに扱うときは150MBは確保しています。
そこまでするくらいなら最初からSQL Server +Accessにすればいいのに、ということなんですが、Accessだけでどこまでいけるか実験中なので・・・。(^^)
今はクライアント26台、サーバ1台でなんとかしています。
また、クライアントPCはできるだけ高速なマシンが良いです。
できればPen4・2GHz以上。
今時は無いと思いますが、CPUのキャッシュが256KB以下のマシンではAccessを使わないほうが無難です。
あと、重要なのは「バージョンを混在させない」「OSのバージョンも揃える」などです。
1台のPCの中に「複数のバージョンを混在」させることは可能ですが、手におえないエラーが出て再インストールしても直らないこともありますので注意してください。
全然大丈夫なことのほうが多いですが、万が一ハマると悲惨です。
・速いクエリやVBAプログラムなどを作るほうが壊れにくいことにつながりますので、クエリの作り方に注意してください。インデックスを使ったり。
そのため主キーは全テーブルに必ず設定してください。
主キー設定をしないとクエリなどが動かなくなることもあります。
・そのため、クエリが遅い場合はVBAなどでSQL文をつくってから実行する方法も勉強してください。DAOだとQueryDefを使います。
一般入門書籍で紹介されるような、例えばフォーム上のテキストボックスを参照するようなクエリより、条件値を直接SQL文で指定するほうが高速ですし(クエリのコンパイルの問題を差し引いて考えてもそのほうが高速です)また、Like を使うより、=の完全一致のほうが高速です。
また、Like を使うなら 部分一致と前方一致では
前方一致のほうが高速です。どれも遅い場合の5倍以上は高速になります。
差が大きいと10倍以上は楽に高速になります。
インデックスが使われているか居ないかを調べるにShowplan関数を使います。「Access Showplan関数 レジストリ」で検索してください。
http://www.biz.kotaete-net.net/Default.aspx?pgid …
そのほか色々とありますが、だいたいこのようなことを最低限抑えておけばよいと思います。似たようなものでもっと役に立つ情報がWebにもあるかもしれませんので検索してみてください。
なお、mdbが壊れるというのはそうめったには起こりません。
ほとんどないといってもいいかもしれません。
でもゼロではないのです。
破損が起こると全データが消える(というか読めなくなる)こともあります。
また、営業ができなくなるくらいのダメージを受けることもあります。
なので、過敏なくらい、ファイル破損には準備が必要なのです。
そのときバックアップがしてないと本当に悲惨です。
色んなことに気配りして作成してくださいね。
がんばってください。
No.1
- 回答日時:
全然違う質問を同時にされても回答者が困るだけ。
メニュバー作成についてはこちら
http://www.accessclub.jp/beginer/holiday/holiday …
LAN 上の運用に関しては、
Access 共有 などをキーワードに WEB検索。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ソフトウェア データベースのウェブでの自作 2 2023/08/01 10:06
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- デスクトップパソコン PCでファイルを右ドラッグして出てくるメニューの編集方法を教えて下さい 2 2023/01/17 13:31
- Access(アクセス) Accessで作ったデータベースをwebで活用したい 2 2023/06/03 08:49
- デスクトップパソコン 消えたアプリ 6 2023/02/22 02:54
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(パソコン・スマホ・電化製品) EXCELのSUMPRODUCT関数について 2 2022/09/21 17:30
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
テーブルで一番古いレコードだ...
-
このISAMでは、リンクテーブル・・
-
Oracleで上書きImportはできま...
-
ACCESSで容量が50MBになった...
-
Accessのテーブルデータを一気...
-
「クリップボードにコピーされ...
-
アクセス レコードセットを更...
-
同一テーブルのデータを参照し...
-
ユニオンクエリで複数ファイル...
-
Access無いけど.mdbが見たい!
-
phpMyadmin(さくらSV)で検索が...
-
処理の途中で停止させ、再開さ...
-
MS Accessを共有した際にファイ...
-
Access2000でAccess97のテーブ...
-
結合テーブルでINSERTする方法...
-
mysqlのデータの上限ってありま...
-
access2000 オートナンバーで...
-
住所のDBテーブル、マスターの...
-
複数のテーブルを参照するselec...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
Oracleで上書きImportはできま...
-
結合テーブルでINSERTする方法...
-
accessでレコード更新直後の反...
-
このISAMでは、リンクテーブル・・
-
アクセス レコードセットを更...
-
重複クエリを使ったデータ削除
-
処理の途中で停止させ、再開さ...
-
マテリアライズドビューとスナ...
-
同一テーブルのデータを参照し...
-
ERROR1062:Duplicate entry.......
-
「クリップボードにコピーされ...
-
ORA-01401が表示され、データが...
-
ACCESSで容量が50MBになった...
-
Accessでの稼働日数計算の方法
-
構文エラー : 演算子がありませ...
-
MS Accessを共有した際にファイ...
おすすめ情報