繁体   English   中英

VBA SQL字符串将短日期保存为通用日期而不是短日期

[英]VBA SQL string saving short date as General date instead of short

我正在尝试做一些基本的事情:从accdb文件中提取两个日期[startD]和[endD]。 将它们分别向前移动一个月,将新日期保存为相应记录中的短日期。

我正在通过VBA进行所有操作

问题是它显示的是正确的SQL字符串(如果我执行msgbox sql),但是保存时,它会随时间保存为一般日期,并且是错误的值! *注意:我在澳大利亚,所以我有一个格式部分来确保正确保存日期。

我尝试过使用DateValue()并设置日期格式。

Dim frq As Integer
Dim wks As Integer
Dim CurAcc As Integer
Dim CurAccEnd As Date
Dim Days As Integer
Dim curaccvalue As Currency
Dim cardtype As Integer
Dim cardcharged As Integer




cardtype = 0
cardcharged = 0

CurAcc = Me.ID

curraccvalue = DLookup("Acccurvalue", "Accounts", "[ID] = " & CurAcc)
Curraccend = DLookup("Accend", "Accounts", "[ID] = " & CurAcc)

frq = DLookup("freqid", "Accounts", "[ID] = " & CurAcc)

wks = DLookup("freqvalue", "tblfrequency", "FrequencyID = " & frq)
Days = wks * 7




strsql = "UPDATE Accounts SET AccStart = " & Date & " , AccEND = " &             
Curraccend     + Days & " , AccCurValue = 0.00 WHERE ID = " & CurAcc
MsgBox strsql
DoCmd.RunSQL strsql

将日期隐式转换为字符串时,将使用您的区域设置,但在SQL字符串中,日期必须为美式格式。

为避免这种情况,我建议仅在一个查询中进行更新:

Dim strSql As String

strSql = "UPDATE Accounts " & _
    "INNER JOIN tblfrequency ON Accounts.freqid = tblfrequency.FrequencyID SET " & _
    "AccStart = Date(), " & _
    "AccEND = DateAdd(""w"", tblfrequency.freqvalue, Accounts.Accend), " & _
    "AccCurValue = 0.00 WHERE ID = " & Me.ID

MsgBox strSql
DoCmd.RunSQL strSql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM