• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access VBAでのデータ抽出の仕方)

Access VBAでのデータ抽出の仕方

このQ&Aのポイント
  • Access VBAでデータを抽出する方法について紹介します。
  • Access VBAを使用して、テーブルからデータを引っ張ってきてレコードセットに格納し、テキストボックスにデータを配置する方法について説明します。
  • 現在の方法は条件ごとに値をセットする繰り返しですが、より効率的な方法についても考えています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 もう、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 の機能を上手く利用するのが一番」という陳腐な結論に。

mellow91
質問者

お礼

おぉ!なるほど、アクセスの機能をうまく使うのがよいのですね。ご回答ありがとうございました!

その他の回答 (2)

回答No.3

補足:先の方法を実現するには? DisplayRecord()方式は、一つのSQL文でデータを列1、列2・・・列10の形で取得することが前提。

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

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

mellow91
質問者

お礼

コードまで書いて頂きありがとうございます!感謝です!!

関連するQ&A