2

很简单的问题。我要求用户输入日期。我正在使用该日期的月份来查找月份名称(5 月,6 月等)。我有一个名为months 的参考表,其中包含西班牙语的month_id 和month_name(1-enero、2-febrero 等)。我正在用 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]")

但这给了我错误。如果我使用 Date() 而不是 FileDate,它工作正常。我是否错误地传递了变量?

4

1 回答 1

1

Microsoft Access SQL 中的文字日期采用#dd/mm/yyyy# 格式。请参阅此处的 microsoft 文档

还有一个问题是您发送字符串“Format(Month(FileDate),'0')”而不是变量 FileDate 的值。Access 不知道“FileDate”是什么,只有 VBA 知道。因此,您应该将 FileDate 中的值连接到您的字符串。

如果你有一个变量variable = "foo",并且你想将它以字符串的形式传递给 DLookup 之类的东西,你会写"String " & variablenot "String variable"。这是因此 DLookup 得到“字符串 foo”而不是“字符串变量”。

因此,当像使用 Dlookup 一样将条件作为字符串传递时,您应该使用字符串连接来用两个 # 符号包围变量的值。

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

编辑

当然,我错过了你原来的问题。因为您只使用月份作为您想要的标准:

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