• ベストアンサー

AccessのDlookup関数のエラー

【Access2003】 dlookup関数について教えてください。 やろうとしていることは、ある商品について任意の日付の時点での数量を表示したく、 練習として、 DLookup("[数量]", "t_商品情報", "[品番] = '"& "1001" & "' and [日付] = #" & "2007/12/17" & "#") と記述したときには正常な値が表示されました。 その後、「品番」と「日付」をフォーム上のテキストボックスで任意の値を入力したいと思い、下記のように書き直しました。 DLookup("[数量]", "t_商品情報", "[品番] = '"& "[Forms]![フォーム1]![txt品番]" & "' and [日付] = #" & "[Forms]![フォーム1]![txt日付]" & "#") フォームのテキストボックスにそれぞれ値を入力したところ、「日付の構文エラー」となってしまいました。 勉強不足なのでしょうか、原因がわからず困っております。 お詳しい方のアドバイスをお待ちしております。宜しくお願い致します。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

#は必要です 値をとりたいもの >[Forms]![フォーム1]![txt品番] 等は""の外に出さないとそういう文字列を指定したことになってしまいますよ DLookup("[数量]", "t_商品情報", "[品番] = '"& [Forms]![フォーム1]![txt品番] & "' and [日付] = #" & [Forms]![フォーム1]![txt日付] & "#")

sui-dream
質問者

お礼

ありがとうございました!! きちんと表示できました。単純に置き換えて記述してしまったので…。 本当に助かりました。

その他の回答 (2)

  • yatoaa
  • ベストアンサー率30% (110/362)
回答No.2

# が不要なのでは。(2つとも) [txt日付] はそもそもdate属性なのでは?

noname#140971
noname#140971
回答No.1

以下のDBLookup関数を標準モジュールに登録して試してみて下さい。 そうすれば、エラーの原因は一目瞭然かと思います。 Public Function DBLookup(ByVal strField As String, _             ByVal strTable As String, _             Optional ByVal strWhere As String = "", _             Optional ByVal ReturnValue = "") 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   MsgBox strQuerySQL   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 = IIf(Len(DataValue & ""), 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 <テスト1> DBLookup("[数量]", "t_商品情報", "[日付]=#" & "[Forms]![フォーム1]![txt日付]" & "#") SELECT 文の実行時にエラーが発生しました。(DBLookup) ・Err.Description=クエリ式 '[日付]=#[Forms]![フォーム1]![txt日付]#'の日付の構文エラーです。 ・SQL Text=SELECT ID FROM 日付 WHERE 日付=#[Forms]![フォーム1]![txt日付]# <テスト2> DBLookup("[数量]", "t_商品情報", "[日付]=#" & [Forms]![フォーム1]![txt日付] & "#") この場合、次のような SELECT文が作成されることが判ります。 SELECT [数量] FROM t_商品情報 WHERE [日付]=#2007/01/01#

sui-dream
質問者

お礼

ご丁寧にありがとうございます。 No.3の方のご回答を拝見して解決してしまったのですが、これも時間が出来たときに試してみます。 こういう風にエラーの原因を探る方法があるのですね。 勉強になりました。