dポイントプレゼントキャンペーン実施中!

【Access2003】
dlookup関数について教えてください。

やろうとしていることは、ある商品について任意の日付の時点での数量を表示したく、

練習として、
DLookup("[数量]", "t_商品情報", "[品番] = '"& "1001" & "' and [日付] = #" & "2007/12/17" & "#")

と記述したときには正常な値が表示されました。

その後、「品番」と「日付」をフォーム上のテキストボックスで任意の値を入力したいと思い、下記のように書き直しました。

DLookup("[数量]", "t_商品情報", "[品番] = '"& "[Forms]![フォーム1]![txt品番]" & "' and [日付] = #" & "[Forms]![フォーム1]![txt日付]" & "#")

フォームのテキストボックスにそれぞれ値を入力したところ、「日付の構文エラー」となってしまいました。

勉強不足なのでしょうか、原因がわからず困っております。
お詳しい方のアドバイスをお待ちしております。宜しくお願い致します。

A 回答 (3件)

#は必要です



値をとりたいもの
>[Forms]![フォーム1]![txt品番]
等は""の外に出さないとそういう文字列を指定したことになってしまいますよ

DLookup("[数量]", "t_商品情報", "[品番] = '"& [Forms]![フォーム1]![txt品番] & "' and [日付] = #" & [Forms]![フォーム1]![txt日付] & "#")
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/12/17 13:20

# が不要なのでは。

(2つとも)
[txt日付] はそもそもdate属性なのでは?
    • good
    • 0

以下の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#
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/12/17 13:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!