愚者の経験

「また今度」はほとんどこない

フォームのレコードソースを利用しないメリット

Accessのテーブルへの問い合わせは
「レコードソースまたは値集合ソースが設定されているオブジェクトが読み込まれる
(フォームが開くまたはその後コンボボックスの初回のプルダウン時など)」たびに自動的に発生するので
結構無駄が多いです。お手軽ということではあるのですが…
データシートのフィルタやソートの時にも下手すれば全件取得しているのもいただけないです。
SQLServerのプロファイラーで確認したときはびっくりしました。

コードの量は当然増えるがRecordsetオブジェクトを直接代入する場合はそのようなことはないです。

    Set Forms(“フォーム1”).Recordset = rst
    Set Forms(“フォーム2”).コンボボックス1.Recordset = rst

また上記のようにRecordsetを使い回せば、フォーム1でのRecordsetの変更を
フォーム2のコンボボックスのデータに反映できます。最新のデータ表示にはRecordsetをSetしなおす必要がありますがその操作によってデータの問い合せが行われるわけではありません。

ネットワークにはかなりやさしいプログラムになる反面、作る人にとってはかなり厳しいものになります。

※注意
バッチ更新モードの場合はUpdateBatchを実行しないと「見えません」。
以下のコードではAddNewしたデータはコンボボックスに見えません。(空行にみえます。)

rst.AddNew “フィールド1”, 1000
Set Forms(“フォーム2”).コンボボックス1.Recordset = rst

しかしレコードセットの値を見るとしっかり入っています。
UpdateBatchを実行します。

rst.AddNew “フィールド1”, 1000
rst.UpdateBatch
Set Forms(“フォーム2”).コンボボックス1.Recordset = rst

結構ハマりました。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。