使用VBA在Access中插入日期

问题描述:

我在我的表格中有一个“dd/mm/yyyy”格式的日期字段。使用VBA在Access中插入日期

我想通过使用VBA代码的窗体插入到该字段中的变量。我有这样的:

vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy")) 
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & vardtedate & "#);" 

它工作正常,但只有当一天过去12 如果我尝试插入类似'12/06/2016' 这表明它扭转,像'06/12/2016“,并且该领域将在12月6日而不是6月12日。我究竟做错了什么?我错过了什么?

我试着参数化,问题依然存在。

+1

[Access VBA和SQL日期格式]的可能重复(http://stackoverflow.com/questions/35917305/access-vba-sql-date-formats)。不要介意这个问题是关于一个SELECT语句,问题是相同的。 – Andre

+0

参数化查询并使用'Date'类型而不是'String's。 – Comintern

+0

不知道这是否工作'vardtedate = CDate(格式(Me.dtedate.Value,“mm/dd/yyyy”))''。当你设置vardtedate – Seb

所以我正在寻找解决方案,我发现这个线程Inserting current DateTime into Audit table。显然,当你尝试通过sql语句插入一个日期值时,它会将不明确的日期格式转换为“mm/dd/yyyy”。我将变量格式化为“yyyy/mm/dd”,现在可以完美工作。

vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy")) 
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & Format(vardtedate, "yyyy-mm-dd") & "#);" 

是的,它与桌面设置的区域设置有关。美国的数据规范与欧洲或其他标准完全不同。详细信息请参阅下面的链接。

https://support.office.com/en-us/article/Set-default-values-for-fields-or-controls-99508d03-b28b-4057-9652-dac1c4c60d86

当你发现,设置格式强制修复。