dポイントプレゼントキャンペーン実施中!

ACCESS2003でデータベースソフトを作っています。アプリケーションソフトにあるようなメニューバーを作りたいのですが、どうすればいいでしょうか。
メニューバーはファイル(F) 編集(E) 表示(V)と出ている部分です。(F)(アクセスキーと言うのでしょうか?)の作り方もできれば教えて下さい。
またACCESSで作ったデータベースソフトをLAN上で使いたいのですが、これについてもお教え頂きますようお願いします。
以上どうかよろしくお願いします。

A 回答 (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が壊れるというのはそうめったには起こりません。
ほとんどないといってもいいかもしれません。
でもゼロではないのです。
破損が起こると全データが消える(というか読めなくなる)こともあります。
また、営業ができなくなるくらいのダメージを受けることもあります。
なので、過敏なくらい、ファイル破損には準備が必要なのです。
そのときバックアップがしてないと本当に悲惨です。

色んなことに気配りして作成してくださいね。

がんばってください。
    • good
    • 0
この回答へのお礼

大変に詳しい解説をありがとうございました。
感謝申し上げます。

お礼日時:2008/09/13 12:06

全然違う質問を同時にされても回答者が困るだけ。



メニュバー作成についてはこちら
http://www.accessclub.jp/beginer/holiday/holiday …

LAN 上の運用に関しては、
  Access 共有 などをキーワードに WEB検索。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2008/09/05 12:15

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

関連するカテゴリからQ&Aを探す