accessについて知恵をお借りしたいと思います。

Microsoft Access | Visual Basic169閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ご回答ありがとうございます。常時稼働しているパソコンが無いので(導入もできないんです…)そもそもサーバーの導入ができないんです…パススルークエリとかもやりたいんですけどね…

ThanksImg質問者からのお礼コメント

みなさまとても勉強になりました。SQLサーバーなどの将来的な可能性を教えていただきましたので、僭越ですがベストアンサーとさせていただきます。ありがとうございました。

お礼日時:5/22 17:10

その他の回答(3件)

0

どれくらいのレコード件数かわかりませんが、フォームにフィルターをかけて読みこむということは、全レコードをローカルPCに読み込んでからフィルタリングしているだけだと思いますので、SQL(where句で)で絞り込んで読み込ませたらどうなるか試してみたいですね。 あとは、ADOとかお使いかわかりませんが、レコードセットにデータを読み込んで、それをレポートやフォームにセットするとか。 自分なら、とりあえずテスト的に、adoでカソールやロックタイプを変更したり少ない列数のSQLで、どれくらいのレスポンスで指定した件数が読み込まれるかテストしてみますね。これで感覚的に速いレスポンスがあれば、ここで読み込んだレコードセットをレポート等にセットするプログラムを作ります。例えばクエリーが複雑だったり、テーブルの設計が悪くて遅い場合もありますので、単純なテーブルだけ読み込んだらどうなるかなどをテストします。 また、ADOを使う場合、最後にコネクションやレコードセットを Nothingコマンド等でリソースを開放させるコマンドを入れるので、そこでバックエンドとのコネクションは一度途切れると思われますので(詳しくはわかりませんが)、他のユーザーがアクセスした際にファイルが使用中であったりロックされて待ち状態になることは無いものと思います。

ご回答ありがとうございます。私なりにaccessの仕組みを調べたところ、共有のネットワークフォルダに保存しているだけのバックエンドの場合、サーバー側でSQLをかけてから読み込ませるのはできなそうです(一旦テーブルをダウンロードしないとフィルタをかけられない)。 確かに複雑なクエリなのに速いものがあったり、シンプルなのに遅いadoとかもあるので、色々なパターンで試して速度を計測してみようと思います。 Nothingはいれなくても通常ENDで切れるはずですが、循環参照とかでEND後も継続しているものがないか確認しておこうと思います。ありがとうございます。

0

DB直接だと、デッドロックの危険があるので、自分はフォームにテンポラリー持たせて、検索時にテンポラリーに格納して表示してますね。 追加や更新は、更新日項目で判別してます。更新されてたら、検索からやり直させる方式。 ものすごい改造になるので、参考までにっと思ってください。

ご回答ありがとうございます。データの更新が週1回なのと、使用するテーブルのうち9割5分は1つのテーブルに偏っているので、まさにそういった方法がないかと考えていました。ローカルにデータが残らないのでセキュリティ上望ましいですし、データベースの最適化/修復もやらなくていいのであれば手間も省けるので1石2鳥です。メモリを占拠しないかとか不安な点もあるのですが、もう少し具体的に教えていただけないでしょうか?よろしくお願いします。