首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dlookup检索错误的日期

Dlookup检索错误的日期
EN

Stack Overflow用户
提问于 2012-10-03 00:16:02
回答 2查看 651关注 0票数 1

我正尝试在数据库中获取日期,但当日期小于12天时,月份和日期会被切换

示例:在数据库2012-02-10 (2012年10月2日)中,我执行此操作时获得的值:

lastDateMill = Nz(DLookup("LastContactDate", "Mills", "MillID = " & lstMills.Column(0, i)), 0)

代码语言:javascript
复制
lastDateMill = "10/02/2012" 

所以我认为这只是一个格式问题,但是当我这样做的时候

代码语言:javascript
复制
Format(lastDateMill, "Long Date") 

它等于“2月10日-12日”

这就是我更新日期的方式

代码语言:javascript
复制
DoCmd.RunSQL "UPDATE Mills SET LastContactDate = #" & SalesCallDate & "# WHERE MillID = " & lstMills.Column(0, i)

还有SalesCallDate = "2/10/2012",所以这是个不错的日期

那么为什么要切换日期和月份呢?

前端是ms-access-2010,后端是SQL SERVER 2012

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-03 00:37:19

您的SalesCallDate变量包含文本形式的日期:

SalesCallDate = "2/10/2012“

显然,您希望该字符串的日期格式为m/d/yyyy,但它被解释为d/m/yyyy格式。

yyyy/mm/dd格式存储字符串值,以避免因区域设置问题而引起的混淆... 2012/02/10

由于SalesCallDate实际上是一个包含日期值的文本框,因此请更改您的UPDATE方法,以避免由于区域设置而导致的日期问题。

代码语言:javascript
复制
Dim strUpdate As String
Dim db As DAO.Database
strUpdate = "UPDATE Mills SET LastContactDate = " & _
    Format(Me.SalesCallDate, "\#yyyy-m-d\#") & vbCrLf & _
    "WHERE MillID = " & Me.lstMills.Column(0, i)
Debug.Print strUpdate
Set db = CurrentDb
db.Execute strUpdate, dbFailonerror
Set db = Nothing
票数 1
EN

Stack Overflow用户

发布于 2012-10-03 01:22:24

尝试一下,通过显式指定一种格式

代码语言:javascript
复制
DoCmd.RunSQL "UPDATE Mills SET LastContactDate = #" & _
    Format$(SalesCallDate,"yyyy/mm/dd") & "# WHERE MillID = " & _
    lstMills.Column(0, i)

更新

也许有更好的方法可以做到这一点,那就是独立于任何格式。这个想法是将日期从一个表格转移到另一个表格,而不需要任何组合、列表或文本。因此,避免了从日期类型到字符串,然后再转换回日期字段的任何转换。

如果表可以连接(假设MillID是列表框的绑定字段):

代码语言:javascript
复制
DoCmd.RunSQL "UPDATE Mills " & _
  "INNER JOIN sourceTable ON Mills.MillID = sourceTable.MillID " & _
  "SET LastContactDate = sourceTable.SalesCallDate " & _
   "WHERE Mills.MillID = " & lstMills

否则

代码语言:javascript
复制
DoCmd.RunSQL "UPDATE Mills SET LastContactDate = " & _
  "(SELECT SalesCallDate FROM sourceTable WHERE ID = " & sourceID & ")" _
  "WHERE Mills.MillID = " & lstMills
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12694197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档