【发布时间】:2017-02-20 09:50:51
【问题描述】:
通常我通过反复试验在VBA 和SQL 中找出我的DateTime 问题,但在这种情况下我碰壁了。
我什至不确定我能做我想做的事。
我有一个包含 F1、F2 等字段的临时表。
字段 F7 包含一个日期,格式为 dd/MM/yyyy 的字符串。
现在,我想将临时表中的数据复制到应将字段 F7 中的数据存储在 Date/Time 字段中的表中。此字段的格式为短日期 (dd-MM-yyyy)。
我尝试过单独使用CDate()、Format() 和Trim() 以及几种组合,同时用## 填充我的日期数据并将括号[] 添加到我的表fieldname,但我根本找不到正确的组合。
这是我的代码。 importedDate 工作正常,因为我使用的是变量。但是对于 F7 字段,我将 SQL 查询与 VBA 日期转换混合在一起,这对我不起作用:
Sub MoveImportedData()
Dim SQLStr As String
SQLStr = "INSERT INTO TblDebitorSaldoListe " _
& "(CompanyCode,CompanyName, CustomerNumber, CustomerName, OneTimeCustomerName, TermsOfPayment, NetDueDate, Reference, " _
& "DunningBlock,Comment, ReminderOne, ReminderTwo, DebtCollection, TotalAmountDKK, TotalNotYetDueDKK, TotalOverdueDKK, " _
& "ReminderOneFile, ReminderTwoFile, NoReminder, ImportedDate) " _
& "SELECT F1, F2, F3, F4, F5, F6, #" & CDate("F7") & "#, F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, '" & CDate(Date) & "' " _
& "FROM TEMP WHERE Len(F1)=4" _
MsgBox SQLStr
DoCmd.RunSQL SQLStr
End Sub
任何帮助将不胜感激。我正在使用 Access 2013。
谢谢。
【问题讨论】:
-
您能否添加您尝试使用的代码来转换
DataType?可能是您在这里使用的代码有问题? -
我已经尝试过这种组合: & "SELECT F1, F2, F3, F4, F5, F6, 'CDate(Format(Trim(F7), " & Chr(34) & "dd -mm-yyyy" & Chr(34) & "))', F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, '" & CDate (日期) & "'" _
-
您能否将变量(例如
newDate)声明为DateTime的类型。运行SELECT查询以获取 F7 的值,然后对该值运行 VBA 转换命令,然后以这种方式插入?它可能需要一个循环来为每一行执行此操作,因此不是最有效的方法,但只是为了检查它是否有效。 -
嗨,大卫。谢谢回复。我会试试的。
-
你好。我认为我的问题是我的日期在我们在丹麦使用的“23.10.2016”表格上。使用 Replace(date, ".", "-") 似乎对我有用,让我继续。
标签: sql datetime ms-access vba