非常简单的问题。我要求用户输入日期。我使用该日期的月份来查找月份名称(5月为5月,6月为6月等)。我有一个名为months的ref表,其中包含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,它正常工作。我错误地传递了变量吗?
答案 0 :(得分:1)
Microsoft Access SQL中的文字日期格式为#dd / mm / yyyy#。 See microsoft's documentation here
还有一个问题是您发送字符串“Format(Month(FileDate),'0')”而不是变量FileDate的值。 Access不知道“FileDate”是什么,只有VBA知道。所以你应该将FileDate的值连接到你的字符串。
如果你有一个变量variable = "foo"
并且想要将它在字符串中传递给像DLookup这样的东西,你会写"String " & variable
而不是"String variable"
。这是如此DLookup得到“String foo”而不是“字符串变量”。
因此,当您将条件作为字符串传递时,例如使用Dlookup,您应该使用字符串连接用两个#符号包围变量的值。
monthname = DLookup("[month_name]", "[months]", "#" & FileDate & "# = [month_id]")
当然,我想念你原来的问题。因为您只使用月份作为标准,例如:
monthname = DLookup("[month_name]", "[months]", Month(FileDate) & " = [month_id]")