使用VBA在Access中插入日期

时间:2016-11-25 12:53:32

标签: sql vba date format access

我的桌子上有一个日期字段," dd / mm / yyyy"格式。

我试图通过使用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日。我究竟做错了什么?我错过了什么?

我试图进行参数化,问题仍然存在。

3 个答案:

答案 0 :(得分:1)

所以我一直在寻找解决方案,我找到了这个帖子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") & "#);"

答案 1 :(得分:0)

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

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

如您所知,设置格式会强制修复。

答案 2 :(得分:0)

CDate(Format(Date.Now,“ MM / dd / yyyy”))