Microsoft Access 掲示板

SQL ServerからADOで取得したRecordsetの扱いについてご教示いただけないでしょうか。 / 1

2 コメント
views
4 フォロー
1

なかなか、回答が付かないですね。
私自身は、SQL Serverでの経験がないので、適切な回答はできないので、
感想的な回答ですので、参考程度に。

3. リンクテーブルは遅いからADOを使えという知見が多く見られるため、

そのようなソースのリンクがあれば紹介してもらえますか。

個人的には、リンクテーブルだから遅いのではなく、リンクテーブルと連結したフォームだと、常に更新可能なレコードセットとしてサーバーデータと常時接続された状態だから、遅いのだと思います。

ですので、ADOのレコードセットを開いて、フォームと連結させたら、結局、上記と同じ状態なので、速度的にはたいしてかわらないと推測しています。

もし、リンクテーブルと連結したフォームより、ADOのレコードセットと連結したフォームの方が速度的に有利であるという信頼できるソースがあるなら知りたいです。

1. ADOで取得したレコードセットをフォームにセットしても、
リンクテーブルから取得していた時のように連結フィールドへのデータ入力が
そのままがDBに反映されることはない?(スナップショットの様な動作?)

下記によると要件さえ満たしいれば、更新可能になるようです。

ADO レコードセットにフォームを連結します | Microsoft Docs

2. 従来のリンクテーブルで動作したしていたFilterを、
ADOで取得したフォームのレコードセットに適応しても画面に反映されない。

フォームのそのようなプロパティはレコードソースで接続していることが前提のようで、Recordsetプロパティで連結した場合はほとんど使えないようです。RecordsetのFilterプロパティを使うか、SQLでレコードセットを再取得して、それと連結させるという処理が必要なようです。

ということで、あくまで、想像ですが、
連結フォームのような使い勝手は難しいと思います。

結局、速度改善したいなら、
パススルークエリで、必要なデータのみ取得して、これは閲覧のみ、更新する場合は、別に非連結フォームで更新したものを、更新クエリ、あるいは追加クエリでデータ更新することになるのではと思っています。

通報 ...