expert's exchangeおよびteck republicには、combobox.recordsetプロパティを使用してAccessフォームにコンボボックスを設定する方法についての資料があります。ComboBoxにVBAを使用してレコードセットを設定する方法
これらのコントロールには、通常、コントロールの 'rowsource'プロパティに「SELECT *」文字列が挿入されており、クライアント側で使用できるテーブルまたはクエリが参照されます。私はコンボボックスにサーバーのサイドデータを表示する必要があるとき、私は一時的なローカルテーブルを作成し、要求されたレコードをインポートします。これは時間がかかり、特に大きなテーブルでは時間がかかります。
レコードセットを使用してコンボボックスコントロールにデータを格納できると、ユーザーはサーバー側から直接データを表示できます。 2つの前の例に触発さ
は、私は次のようにいくつかのコードを書いた:
Dim rsPersonne as ADODB.recordset
Set rsPersonne = New ADODB.Recordset
Set rsPersonne.ActiveConnection = connexionActive
rsPersonne.CursorType = adOpenDynamic
rsPersonne.LockType = adLockPessimistic
rsPersonne.CursorLocation = adUseClient
rsPersonne.Open "SELECT id_Personne, nomPersonne FROM Tbl_Personne"
fc().Controls("id_Personne").Recordset = rsPersonne
:
- connexionActive:私のデータベースサーバへの私の永久的なADO接続です
- FC() :現在の/アクティブなフォームです
- コントロール( "id_Personne"): コンボボックスコントロールには、 会社スタッフリスト
- Accessバージョン2003
では残念ながら、それは動作しません!
デバッグモードでは、レコードセットが正しく作成され、要求された列とデータで、コンボボックスコントロールに適切に関連付けられていることを確認できます。残念ながら、私がフォームを表示すると、空のコンボボックスが残っていて、そこにレコードはありません!どんな助けも高く評価されます。
EDIT:
このレコードセットプロパティが実際に特定のコンボボックスオブジェクトのではなく、標準のコントロールオブジェクトのために利用可能である、と私は数日前にそれを発見することは非常に驚きました。 私はすでにコンボボックスのコールバック関数を使用しようとしましたが、コンボボックスの "addItem"メソッドでリストを設定しようとしました。これらはすべて時間がかかります。
私にはうまくいかない:/エラー91:ブロックが存在しない –
アドバイスが必要な場合は、エラーのあるコードを与え、エラーを投げるラインを特定する必要があります。 –
ここでのエラーの説明:http://stackoverflow.com/questions/16231456/how-to-populate-a-listbox-with-a-adodb-recordset-error-91 –