2

非常に単純な質問です。ユーザーに日付の入力を求めています。その日付の月を使用して月名を検索しています (5 月は 5、6 月は 6 など)。スペイン語で month_id と month_name (1-enero、2-febrero など) を持つ months という参照テーブルがあります。私はこれをVBAで書いています:

Dim FileDate as Date
Dim DateString as String

DateString = InputBox("Enter the file date in MM/DD/YYYY format", "Title")
FileDate = DateValue(DateString)
monthname = DLookup("[month_name]", "[months]", "Format(Month(FileDate),'0') = [month_id]")

しかし、これは私にエラーを与えています。FileDate の代わりに Date() を使用すると、正しく機能します。変数を間違って渡していますか?

4

1 に答える 1

1

Microsoft Access SQL のリテラル日付は、#dd/mm/yyyy# の形式です。こちらの Microsoft のドキュメントを参照してください

変数 FileDate の値ではなく、文字列 "Format(Month(FileDate),'0')" を送信しているという問題もあります。アクセスは「FileDate」が何であるかを知りません.VBAだけがそれを知っています. したがって、FileDate の値を文字列に連結する必要があります。

変数がvariable = "foo"あり、それを文字列で DLookup などに渡したい場合は、"String " & variablenotと記述します"String variable"。これは、DLookup が「文字列変数」ではなく「文字列 foo」を取得するためです。

したがって、Dlookup のように条件を文字列として渡す場合は、文字列連結を使用して、変数の値を 2 つの # 記号で囲む必要があります。

monthname = DLookup("[month_name]", "[months]", "#" & FileDate & "# = [month_id]")

編集

もちろん、私はあなたの元の質問を読み違えました。月のみを基準として使用しているため、次のようなものが必要です。

monthname = DLookup("[month_name]", "[months]", Month(FileDate) & " = [month_id]")
于 2013-08-21T22:54:16.603 に答える