- ベストアンサー
Access VBAでのデータ抽出の仕方
- Access VBAでデータを抽出する方法について紹介します。
- Access VBAを使用して、テーブルからデータを引っ張ってきてレコードセットに格納し、テキストボックスにデータを配置する方法について説明します。
- 現在の方法は条件ごとに値をセットする繰り返しですが、より効率的な方法についても考えています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
もう、10数年前ですが DisplayRecord()を作った記憶があります。次のような使い方をします。 Private Sub Form_Load() Dim StopNow As Boolean StopNow = Not DisplayRecord(Me, "SELECT * FROM id管理表 WHERE id_name='Test'") If Not StopNow Then Message "フォームが正常に表示されました。" End If End Sub 当然に、DisplayRecord()だけでフォームのテキストボックスを更新するには仕掛けというか約束事が必要です。私は、テキストボックスの名前を'XXXXXX列名'とするというルールを作成。これで、DisplayRecord()は、コントロール名とフィールド名が一致するテキストボックスを探せます。まあ、洗練と言うならば’汎用化’を志向することかと。 <蛇足> 私の経験では、この手の関数の出番はありませんでした。非連結フォームでAccessのフォーム機能を全て実現するクラスライブラリ等も開発しましたが、結局は、非常に重たくて使いものになりませんでした。最終的には、「Access の機能を上手く利用するのが一番」という陳腐な結論に。
その他の回答 (2)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
補足:先の方法を実現するには? DisplayRecord()方式は、一つのSQL文でデータを列1、列2・・・列10の形で取得することが前提。
- nda23
- ベストアンサー率54% (777/1416)
txt1~txt10 ここだけサブフォームにして、 サブフォームのレコードセットを次のように します。 SELECT TOP 10 ZAIKO FROM table1 ORDER BY ID 但し、レコードが10未満だとテキストボックスは 10個でません。これが嫌ならレコードセットで ループするしかないでしょう。 For I = 1 To 10 With Controls("txt" & CStr(I)) If objADORS.EOF Then .Value = "" Else .Value = objADORS.Fields("ZAIKO") objADORS.MoveNext End If End With Next
お礼
コードまで書いて頂きありがとうございます!感謝です!!
お礼
おぉ!なるほど、アクセスの機能をうまく使うのがよいのですね。ご回答ありがとうございました!