• ベストアンサー

テキストボックスにクエリ結果を表示させたい

フォームにテキストボックスAがあり、そこに入力した文字(下記テーブルのフィールド1の文字)をクエリーの「抽出条件」にし、同じフォーム上のテキストボックスBに表示しようと思っています。 クエリを開くとパラメータの入力を求めてきて、入力するとうまく抽出されます。 テーブルは フィールド1|フィールド2   A   |  10   B   |  20   C   |  30   D   |  40 のような簡単なものです。 テキストボックスBのコントロールソースに 「=[○×クエリ]![フィールド2]とやっても「#Name?」と表示されてしまいます。 どのようにやればよいのでしょうか?

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

クエリは必要ありません。 フォームのレコードソースに無いデータを表示させる 場合には DLookUp を使います。 テキストボックスBのコントロールソースに =DLookUp("フィールド2","テーブル名","フィールド1='" & [テキストボックスA]) & "'" 上記は「フィールド1」が文字列型の場合です。 数値型の場合は次のようになります。 =DLookUp("フィールド2","テーブル名","フィールド1=" & [テキストボックスA]) DLookUp 関数は コントロールソースに限らず VBA でも使用し、Access では、非常に使用頻度の高いものです。 ヘルプで調べて、ぜひマスターしてください。 もし Access でなかったら、このレスは無視して下さい。

hike106
質問者

お礼

bonaron様 解答有り難うございます。 DLookUp関数の関数のことは知りませんでした。 これからもよく使用していくことになりそうなのでマスターしようと思います。 ありがとうございました。

その他の回答 (1)

noname#22222
noname#22222
回答No.2

No1さんの回答が基本。 実行速度を重視するならばADODB を利用する次のステップへ。 =DBLookUp("フィールド2","テーブル名","フィールド1='" & [テキストボックスA] & "'") Public Function DBLookup(ByVal strField As String, _              ByVal strTable As String, _              Optional ByVal strWhere As String = "", _              Optional ByVal ReturnValue = Null) As Variant On Error GoTo Err_DBLookup    Dim DataValue    Dim strQuerySQL As String    Dim rst     As ADODB.Recordset    Set rst = New ADODB.Recordset    strQuerySQL = "SELECT " & strField & " FROM " & strTable    If Len(strWhere) > 0 Then      strQuerySQL = strQuerySQL & " WHERE " & strWhere    End If    With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        DataValue = .Fields(0)      End If    End With Exit_DBLookup: On Error Resume Next    rst.Close    Set rst = Nothing    DBLookup = Nz(DataValue, ReturnValue)    Exit Function Err_DBLookup:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBLookup End Function

hike106
質問者

お礼

s_husky様 解答有り難うございます。 まだaccessを始めたばかりなのでモジュール関連はもう少し勉強してから使用したいと思います。 そのときには参考にさせて貰います。 今回は有り難うございました。

関連するQ&A