vba访问Dlookup,日期为年月日格式
我试图使用DlookUp获取一个值,问题是访问将我的dd/mm/yyyy格式化为mm/dd/yyyy,尽管使用了Format函数vba访问Dlookup,日期为年月日格式,vba,datetime,ms-access-2010,dlookup,Vba,Datetime,Ms Access 2010,Dlookup,我试图使用DlookUp获取一个值,问题是访问将我的dd/mm/yyyy格式化为mm/dd/yyyy,尽管使用了Format函数 muestraAguasDatos = Nz(DLookup("[name]", "samples", "[location] = '" & location & "' AND ([name] LIKE '*ACRT*' OR [nombre] LIKE '*CAWQ*') AND
muestraAguasDatos = Nz(DLookup("[name]", "samples", "[location] = '" & location & "' AND ([name] LIKE
'*ACRT*' OR [nombre] LIKE '*CAWQ*') AND [sample_date] = #" & Format(sampleDate, "dd/mm/yyyy") & "#"))
当日值>12时,此DLookup有效,但当日值较低时,尽管有格式,但仍将其格式化为mm/dd/yyyy
您能帮我解决这个问题吗?对于非美国居民的MS Access日期字段,存在很多误解 基本规则是: 无论何时使用日期符号指定硬编码日期文字,在 要么:
- SQL查询
- 查询筛选条件
- 在VBA中
- 在
Dlookup()
#日期#
编码日期文字时,使用DD/MM/YYYY格式,它可以正常工作。原因是日期在MS Office中有一个检查日期算法,可以在某些情况下验证日期并将其修改为正确的格式:
- 如果月份部分高于12,低于31,则MS Access将理解这实际上是一天,并且您在另一个地方硬编码了月份。例如,如果你像这样介绍9月15日:
它将在#15/09/2019#
中隐式转换。但是,如果您像这样进入2019年9月11日,Access将作为11月9日进行处理李>#09/15/2019#
就我个人而言,我总是觉得最后一个行为非常愚蠢,因为它可能会给不熟悉该机制的人的应用程序带来很多麻烦,而且跟踪问题的来源可能非常乏味。它很狡猾,不应该在那里。如果格式错误,最好提出错误。对于非美国居民,MS Access日期字段存在很多误解 基本规则是: 无论何时使用日期符号指定硬编码日期文字,在 要么:
- SQL查询
- 查询筛选条件
- 在VBA中
- 在
Dlookup()
#日期#
编码日期文字时,使用DD/MM/YYYY格式,它可以正常工作。原因是日期在MS Office中有一个检查日期算法,可以在某些情况下验证日期并将其修改为正确的格式:
- 如果月份部分高于12,低于31,则MS Access将理解这实际上是一天,并且您在另一个地方硬编码了月份。例如,如果你像这样介绍9月15日:
它将在#15/09/2019#
中隐式转换。但是,如果您像这样进入2019年9月11日,Access将作为11月9日进行处理李>#09/15/2019#
就我个人而言,我总是觉得最后一个行为非常愚蠢,因为它可能会给不熟悉该机制的人的应用程序带来很多麻烦,而且跟踪问题的来源可能非常乏味。它很狡猾,不应该在那里。如果格式错误,则最好引发错误。如果使用
和[sample\u date]=sampleDate
,是否有效i、 e.不要试图将日期转换为字符串。不,DLookUp认为2020年8月7日是7月8日,而实际上是8月7日,如果我将条目日期更改为2020年7月8日,DLookUp无论如何都会起作用。1)是否将sampleDate
声明为date
类型?应该是2)如果不起作用,您可以尝试格式(sampleDate,“yyyy-mm-dd”)
。Access要求mm/dd/yyyyy
(美国格式),而不是dd/mm/yyyy
yyyy-mm-dd
也可以。所以我不可能执行日期为dd/mm/yyyy的dlookup?你把事情搞混了。日期值不带格式,但会应用格式进行显示。但是,日期值的字符串表达式必须具有不能被误解的格式。对DAO和ADO都有效的唯一格式是ISO序列:yyyy-mm-dd。因此,习惯使用它。如果使用和[sample_date]=sampleDate,它有效吗<