vba访问Dlookup,日期为年月日格式

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

我试图使用DlookUp获取一个值,问题是访问将我的dd/mm/yyyy格式化为mm/dd/yyyy,尽管使用了Format函数

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()
您应始终使用美国日期格式:MM/DD/YYYY,或ISO格式YYYY/MM/DD

Access初学者的困惑来自以下几个方面:

  • 在界面中,默认情况下,MS Access以计算机上定义的格式对日期进行隐式转换。因此,非美国居民可能会有这样的印象,日期总是默认以DD/MM/YYYY格式存储,但这个蛋糕是个谎言。日期存储为数字,只是显示格式随计算机设置而改变和调整

  • 在某些情况下,当您在VBA或查询中使用
    #日期#
    编码日期文字时,使用DD/MM/YYYY格式,它可以正常工作。原因是日期在MS Office中有一个检查日期算法,可以在某些情况下验证日期并将其修改为正确的格式:

    • 当你的日期从一年开始时,Access足够聪明地检测它,然后它会考虑你的日期在YYY-MM-DD中进行,并隐式转换为MM/DD/YYYY。
    • 如果月份部分高于12,低于31,则MS Access将理解这实际上是一天,并且您在另一个地方硬编码了月份。例如,如果你像这样介绍9月15日:
      #15/09/2019#
      它将在
      #09/15/2019#
      中隐式转换。但是,如果您像这样进入2019年9月11日,Access将作为11月9日进行处理

    就我个人而言,我总是觉得最后一个行为非常愚蠢,因为它可能会给不熟悉该机制的人的应用程序带来很多麻烦,而且跟踪问题的来源可能非常乏味。它很狡猾,不应该在那里。如果格式错误,最好提出错误。

    对于非美国居民,MS Access日期字段存在很多误解

    基本规则是:

    无论何时使用日期符号指定硬编码日期文字,在 要么:

    • SQL查询
    • 查询筛选条件
    • 在VBA中
    • Dlookup()
    您应始终使用美国日期格式:MM/DD/YYYY,或ISO格式YYYY/MM/DD

    Access初学者的困惑来自以下几个方面:

  • 在界面中,默认情况下,MS Access以计算机上定义的格式对日期进行隐式转换。因此,非美国居民可能会有这样的印象,日期总是默认以DD/MM/YYYY格式存储,但这个蛋糕是个谎言。日期存储为数字,只是显示格式随计算机设置而改变和调整

  • 在某些情况下,当您在VBA或查询中使用
    #日期#
    编码日期文字时,使用DD/MM/YYYY格式,它可以正常工作。原因是日期在MS Office中有一个检查日期算法,可以在某些情况下验证日期并将其修改为正确的格式:

    • 当你的日期从一年开始时,Access足够聪明地检测它,然后它会考虑你的日期在YYY-MM-DD中进行,并隐式转换为MM/DD/YYYY。
    • 如果月份部分高于12,低于31,则MS Access将理解这实际上是一天,并且您在另一个地方硬编码了月份。例如,如果你像这样介绍9月15日:
      #15/09/2019#
      它将在
      #09/15/2019#
      中隐式转换。但是,如果您像这样进入2019年9月11日,Access将作为11月9日进行处理

    就我个人而言,我总是觉得最后一个行为非常愚蠢,因为它可能会给不熟悉该机制的人的应用程序带来很多麻烦,而且跟踪问题的来源可能非常乏味。它很狡猾,不应该在那里。如果格式错误,则最好引发错误。

    如果使用
    和[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,它有效吗<