簡體   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