因此,我使用 VBA 生成的查询将 Excel 电子表格中的一组记录插入到 Access 数据库中。
我的查询基本上是这样的:
accName = r.Offset(x, 0)
AccNum = r.Offset(x, 1)
sector = r.Offset(x, 2)
holding = r.Offset(x, 3)
holdingvalue = r.Offset(x, 4)
holdingdate = CDate(r.Offset(x, 5))
sSQL = "INSERT INTO Holdings (AccName, AccNum, Sector, Holding, HoldingValue, HoldingDate)" & _
" VALUES ('" & Replace(accName, "'", "''") & "', '" & AccNum & "', '" & sector & "', '" & Replace(holding, "'", "''") & "', '" & holdingvalue & "', #" & holdingdate & "#)"
生成的查询示例如下所示:
INSERT INTO Holdings (AccName, AccNum, Sector, Holding, HoldingValue, HoldingDate)
VALUES ('Account 123', '472700', '', 'IShares S&P 500', '54379.15', #03/12/2012#)
错误功能位是查询中的日期已从英国日期 (dd/mm/yyyy) 变为美国日期 (mm/dd/yyyy)。我还尝试将电子表格上的日期格式化为 ISO 日期(yyyy-mm-dd),但始终作为美国日期,即使我不使用 cdate。知道这里发生了什么吗?
编辑:当我单步执行代码并将鼠标悬停在holdingdate
变量上时,它显示“03/12/2012”并且查询与上面相同(即日期为 dd/mm/yyy 格式,尽管我将holdingdate定义为holdingdate = Format(r.Offset(x, 5), "yyyy-mm-dd")
。单元格中的日期也是连续的(即显示为数字时为 41246)。当我在输入数据后查看 access 数据库时,日期显示为 12/03/2012。我只是不明白... .