• ベストアンサー

Accessでシステムを作ってます

AccessとVBAでシステムを作成してます。初心者です。 検索結果を非連結のテキストボックスに表示させる方法を教えてください。 条件(1) フォームのレコードはどのテーブルとも紐づいていない 条件(2) 2つのテーブルから1つの検索ボタンで検索できるようにしたい テーブルA;案件マスタ テーブルB:リソースマスタ ・検索テキストボックス(1つ) ・検索ボタン(1つ) 条件(3) 案件ID、リソースIDはともに数値型です。 検索結果表示テキストボックス(非連結) ・案件IDテキストボックス:案件マスタより検索した案件IDを表示する ・リソースIDテキストボックス:リソースマスタより検索したリソースIDを表示する 下記のように考えていますが ・非連結のテキストボックスに検索結果を表示させる ・1つの検索ボタンで2つのテーブルから検索ができるようにする 方法がわかりません。 どのようなコードを追記したらいいのか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub btn検索ID_Click() Dim strFilter As String Me![案件マスタ].SetFocus If Me!案件IDテキスト = Me![案件マスタ]![案件ID] Then strFilter = " AND 案件ID= " & Me!案件IDテキスト End If If Me!テキストリソースID = Me![リソースマスタ]![リソースID] Then strFilter = strFilter & " AND リソースID= " & Me!リソースIDテキスト End If 'Forms!ID検索.Filter = Mid(strFilter, 6) Forms!ID検索.FilterOn = True Me.案件IDテキストボックス= Null Me.リソースIDテキストボックス = Null

みんなが選んだベストアンサー

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

> ループじゃなくてフィルターで大丈夫ですよね Filterプロパティはテーブルと紐づいた連結フォームで有効です。 非連結フォーム、非連結テキストボックスでは無意味です。 > 条件(1) > フォームのレコードはどのテーブルとも紐づいていない ということなので、非連結フォームですので、フィルターではダメですよ。 kkkkkmさんの回答であってます。 > sql使うならDAOいりませんか? DAOはインストールした時点で参照設定されていますので、 特に設定はいりません。 古いバージョンだったり、あとから参照設定を外したりした場合、は参照設定をやり直す必要はあります。

putiabu
質問者

補足

sql使うならDAOはいります。 フィルターはセットフォーカスで持ってくれば大丈夫です。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率66% (1717/2587)
回答No.4

> ループはそもそも要らないですよ いらないなら外せばいいだけですが…。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1717/2587)
回答No.3

参照設定はやって試してください。 http://dxr165.blog.fc2.com/blog-entry-115.html

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1717/2587)
回答No.2

> →どこにいれればいいかわかりません。 とりあえずそれだけで試してみて駄目なら先に進むこともありません。

putiabu
質問者

補足

すみませんが ループじゃなくてフィルターで大丈夫ですよね

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1717/2587)
回答No.1

https://www.feedsoft.net/access/sql/sql106.html このサイトを参考にして 以下は案件マスタだけですが、リソースマスタも Set rs = Nothing の後にSQLからLoopまでを変更したものを追加して試してみてください。 Private Sub btn検索ID_Click() Dim SQL As String Dim rs As Recordset Me!検索結果 = Null SQL = "SELECT * FROM 案件マスタ WHERE 検索データフィールド =" & "'" & Me.検索テキストボックス.Value & "';" Set rs = CurrentDb.OpenRecordset(SQL) Do Until rs.EOF Me!検索結果 = Me!検索結果 & rs!案件ID & vbCrLf rs.MoveNext Loop Set rs = Nothing End Sub

putiabu
質問者

お礼

Set rs = Nothing の後にSQLからLoopまでを変更したものを追加して試してみてください。 →どこにいれればいいかわかりません。 どっからどこまでのループですか? ループはそもそも要らないですよ

putiabu
質問者

補足

sql使うならDAOいりませんか? 一つのボタンで2つのテーブル検索ができてない気がします。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう