我目前正在研究 MS Access 数据库,并且遇到日期减法问题。
本质上,我正在尝试创建一个目标日期,例如:
目标日期 = 截止日期 - 提前期
即提前期可能为 30 天,因此目标日期应在截止日期前 30 天。
我尝试使用的代码是这样的:
strSQL = "INSERT INTO dbo_DEALER_TASK ( Dlr_Number, Action_Id, Task_Id, Area_Id,
Task_Deadline_Date, Responsible_Person_Id, Alternate_Person_Id, Priority, Comment,
Suppress_Email, Dealer_Type ) "
strSQL = strSQL & "SELECT dbo_DEALER_ACTION.Dlr_Number, dbo_DEALER_ACTION.Action_Id,
qryAllTasksToAdd.Task_Id, qryAllTasksToAdd.Area_Id, Deadline_Date - Deadline_adjustment
AS 'Task_Deadline_Date', qryAllTasksToAdd.Person_Responsible_Id,
qryAllTasksToAdd.Alternate_Responsible_Id, qryAllTasksToAdd.Priority,
qryAllTasksToAdd.Comment, qryAllTasksToAdd.Suppress_Email,
qryAllTasksToAdd.Applies_To_Dealer_Type "
strSQL = strSQL & "FROM dbo_DEALER_ACTION LEFT JOIN qryAllTasksToAdd ON
(dbo_DEALER_ACTION.Dealer_Type = qryAllTasksToAdd.Applies_To_Dealer_Type) AND
(dbo_DEALER_ACTION.Action_Id = qryAllTasksToAdd.Action_Id) "
strSQL = strSQL & WHERE (((qryAllTasksToAdd.Task_Id)=" & Me.Task_Id & ") AND
((dbo_DEALER_ACTION.Date_Completed) Is Null));"
DoCmd.RunSQL strSQL
当 VBA 代码执行该语句时,所有内容都会正确更新,但 Task_Deadline_Date 字段除外,该字段留空。
真正让我困惑的是,如果我独立运行这个 SQL 语句,它会按预期工作。在尝试了许多不同的想法后,我尝试用字符串文字日期替换“Deadline_Date - Deadline_adjustment AS 'Task_Deadline_Date'”,然后该语句运行良好
有人知道出了什么问题吗?
谢谢,
克里斯