2013-01-21 82 views
2

我目前有一個使用表單中的日期字段的查詢。一切都編譯好,問題是當我嘗試擴大這個。我想在表格上顯示的日期前一天指定一個日期。我用搶的日期目前SQL是在訪問查詢中使用表單中的日期字段

WHERE ((DateValue([TIMESTAMP]))=[Forms]![Frm_Start]![Date]) 

然而,當我嘗試添加+ 1結束時,顯示此消息:

表達的輸入不正確,或者是太複雜,無法評估。

任何意見將不勝感激。

回答

2

使用PARAMETERS子句作爲你的SQL的第一行來通知數據庫引擎的表單控件l包含日期/時間值。

PARAMETERS Forms!Frm_Start![Date] DateTime; 

然後使用與DateAdd()參數的WHERE子句中:

WHERE DateValue([TIMESTAMP])=DateAdd("d", 1, Forms!Frm_Start![Date]) 

然而,這將需要對錶中的每一行運行DateValue()。這應該是更快與[TIMESTAMP]編入索引:

WHERE 
     [TIMESTAMP] >= DateAdd("d", 1, Forms!Frm_Start![Date]) 
    AND [TIMESTAMP] < DateAdd("d", 2, Forms!Frm_Start![Date]) 
+0

TIMESTAMP和日期都是保留字。建議您儘可能重命名它們。 – HansUp

+0

謝謝,這很好。 – robbiecutting

0

一種可能性是:

SELECT Table1.[ADateTime] 
FROM Table1 
WHERE Table1.[ADateTime] Like ([forms]![Table1]![ADate]+1) & "*" 

日期與小數的時間數字,因此另一種可能性:

SELECT Table1.ADateTime 
FROM Table1 
WHERE CLng([ADateTime])=[forms]![Table1]![ADate]+1 
0

嘗試DATEADD函數:

`dateadd("d",1,mydatefield)` 
相關問題