Access VBA:转换为日期的字符串表字段的SQL字符串

Access VBA:转换为日期的字符串表字段的SQL字符串,sql,datetime,ms-access,vba,Sql,Datetime,Ms Access,Vba,通常,我通过反复试验来解决VBA和SQL中的DateTime问题,但在这种情况下,我遇到了麻烦 我甚至不确定我能做我想做的事 我有一个带有字段F1、F2等的临时表 字段F7以字符串形式包含日期,格式为dd/MM/yyyy 现在,我想将数据从临时表复制到一个表中,其中字段F7中的数据应该存储在Date/Time字段中。此字段的格式为短日期(dd-MM-yyyy) 我曾尝试单独使用CDate()、Format()和Trim()并以多种组合使用,同时使用###填充日期数据,并将括号[]添加到我的表fi

通常,我通过反复试验来解决
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


谢谢。

非常简单:

& "SELECT F1, F2, F3, F4, F5, F6, DateValue(F7), F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, Date() " _
或者,如果F7为虚线(更正为带有替换的单引号):


按照古斯塔夫的建议工作

DateValue不起作用,可能是因为我所在的丹麦地区。我认为它返回了错误的日期格式(对我来说),这导致
NULL
被插入到表的
F7
字段中。也就是说,这不起作用,但可能适用于具有不同日期格式的其他人:

& "SELECT F1, F2, F3, F4, F5, F6, DateValue(Replace(F7, ""."", ""-"")), F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, Date() " _
但是
CDate
解决了我的问题,同时添加了额外的
。这对我很有效:

& "SELECT F1, F2, F3, F4, F5, F6, CDate(Replace(F7, ""."", ""-"")), F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, Date() " _

非常感谢你们两位提供了快速而有用的帮助!

您可以添加您尝试用于转换
数据类型的代码吗?可能是您在此处使用的代码有问题?我尝试了以下组合:&“选择F1、F2、F3、F4、F5、F6、'CDate(格式(Trim(F7)”、&Chr(34)和“dd mm yyyy”“&Chr(34)&“)”,F8,F9,”,“,”,“,”,F10,F11,F12,”,“,0,”,&CDate(Date)和“”,您可以将变量(
newDate
,例如)声明为
DateTime
的类型吗。运行
选择
查询以获取F7的值,然后对该值运行VBA Convert命令,然后以这种方式插入?它可能需要一个循环来完成每一行,所以这不是最有效的方法,只是为了检查它是否有效。嗨,David。谢谢你的回复。我会试试的。你好。我认为我的问题是我的日期在丹麦使用的“23.10.2016”表格上。使用Replace(date,“.”,“-”)似乎对我起到了作用,并允许我继续。DateValue将转换字符串,如“23-10-2016”。此外,除了纯整数之外,不应该有DateValue不能转换CDate可以转换的表达式。那么,您的数据到底是什么样子的呢?它包含以下表格中的数据:25.02.2017 08.10.2016 01.12.2016 02.01.2017 21.10.2016DateValue将在替换圆点后转换这些数据,因此必须进行其他操作。抱歉,获取了替换混淆的报价。更正。
& "SELECT F1, F2, F3, F4, F5, F6, CDate(Replace(F7, ""."", ""-"")), F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, Date() " _