我试图通过vba访问使用sql从另一个表中插入记录。一切正常但我想要一个包含日期的字段大于用户输入的第一年。当我将该命令添加到我的语句中时,没有插入任何记录,我很确定这是因为我没有正确比较日期。我是sql的新手,所以任何关于这个问题的帮助以及如何修复它将非常感谢!我已在下面发表声明。
verifHPMS = "INSERT INTO HPMSVerified([CLIENT ID], [CLIENT NAME], [MARKET SEGMENT], [FORMULARY ID], [FORMULARY NAME], [FORMULARY VERSION],[HPMS EXPORTED],[HPMS EXPORT DATE],[APPROVED DATE]) " & _
"SELECT DD.[CLIENT ID],DD.[CLIENT NAME],DD.[MARKET SEGMENT],DD.[FORMULARY ID],DD.[FORMULARY NAME],DD.[FORMULARY VERSION],DD.[HPMS EXPORTED],DD.[HPMS EXPORT DATE],DD.[APPROVED DATE] " & _
"FROM " & tableName & " as DD " & _
"Where DD.[HPMS EXPORTED] IN (""Yes"") " & _
"AND DD.[HPMS EXPORT DATE] >= [APPROVED DATE] " & _
"AND DD.[CLIENT ID] NOT IN(SELECT Exclusions.[Client ID] FROM Exclusions)" & _
"AND DD.[APPROVED DATE]>01/01/" & year
答案 0 :(得分:1)
尝试用此替换最后一行:
"AND YEAR(DD.[APPROVED DATE]) >= " & year & " AND MONTH(DD.[APPROVED DATE]) > 1 AND DAY(DD.[APPROVED DATE]) > 1"
单独比较日期的每个组成部分,以避免出现日期文字问题和字符串插值的手动方法。
答案 1 :(得分:0)
将最后一行替换为:
"AND DD.[APPROVED DATE] > #01/01/" & year & "#"
请注意,无论区域设置如何,VBA和“Jet”SQL始终使用#m / d / y#format作为日期文字。