2016-10-12 19 views
0

我在Access中有一個名爲'Laufzettel'的查詢,它看起來就是這樣。日期是在DD.MM.YYYY格式使用表格從日期檢索數據

Antragsnummer Eingang esigniert Ausgang  Anlage Policierung 

    111   2.10.2016 2.10.2016 3.10.2016    3.10.2016 

    222   3.10.2016 3.10.2016 3.10.2016 4.10.2016 

    333   5.10.2016 6.10.2016 7.10.2016     7.10.2016 

我創建了一個名爲形式「概述」有兩個文本框命名爲起始日期結束日期和搜索按鈕。我需要的是當我通過提供兩個日期來點擊搜索按鈕時,它應該從上述查詢中檢索出與報告形式中的所有字段相關的記錄。

StartDate and EndDate與查詢的Eingang字段有關。所以當我輸入2.10.2016作爲StartDate和5.10.2016作爲EndDate時,它必須產生上述查詢。爲了達到這個目的,我已經開始使用表單域創建一個查詢,當我點擊搜索按鈕時,這些查詢就會生成所需的報告。所以我的代碼

SELECT Laufzettel.ANTRAGSNUMMER,  Laufzettel.Eingang, Laufzettel.esigniert, Laufzettel.Ausgang, Laufzettel.Anlage, Laufzettel.Policierung 
FROM Laufzettel 
WHERE Lauzettel.Eingang BETWEEN [Forms]![overview]![StartDate] and [Forms]![overview]![EndDate]; 

對於我得到一個錯誤Access無法識別[表格]努力![概述]![起始日期]和[窗體]![概述]![結束日期]爲有效字段名稱或表達式

如何實現上述目標?有人能幫我嗎?

編輯:這裏是我現在工作的查詢。雖然它沒有給我EndDate值的記錄。

PARAMETERS [Forms]![overview]![start] DateTime, [Forms]![overview]![end] DateTime; 
SELECT Laufzettel.ANTRAGSNUMMER,  Laufzettel.AEingangDatenstromZWorkflow, Laufzettel.BEingangesigniertDokumentZWorkflow, Laufzettel.CAusgangDatenstromZWorkflow, Laufzettel.DAnlageSchwebeVSL, Laufzettel.EPolicierungVSL 
    FROM Laufzettel 
    WHERE (((Laufzettel.AEingangDatenstromZWorkflow) Between [Forms]! [overview]![start] And [Forms]![overview]![end])); 

有人能告訴我我要去哪裏錯了嗎?

+0

你有一個;之後從laufzettel過早關閉了SQL命令。還是它是錯字? –

+0

啊不,這是一個錯字,但它不是問題。 –

+0

從哪裏執行此命令?發佈您的點擊程序 –

回答

0

如果在代碼生成(VBA),嘗試用:

SQL = "SELECT Laufzettel.ANTRAGSNUMMER, Laufzettel.Eingang, Laufzettel.esigniert, Laufzettel.Ausgang, Laufzettel.Anlage, Laufzettel.Policierung " & _ 
"FROM Laufzettel " & _ 
"WHERE Lauzettel.Eingang BETWEEN #" & Format([Forms]![overview]![StartDate], "yyyy\/mm\/dd") & "# AND #" & Format([Forms]![overview]![EndDate], "yyyy\/mm\/dd") & "#" 

如果 「日期」 字段真的是文本,適用則DateValue

SQL = "SELECT Laufzettel.ANTRAGSNUMMER, Laufzettel.Eingang, Laufzettel.esigniert, Laufzettel.Ausgang, Laufzettel.Anlage, Laufzettel.Policierung " & _ 
"FROM Laufzettel " & _ 
"WHERE DateValue(Lauzettel.Eingang) BETWEEN #" & Format([Forms]![overview]![StartDate], "yyyy\/mm\/dd") & "# AND #" & Format([Forms]![overview]![EndDate], "yyyy\/mm\/dd") & "#" 
+0

由於OP的輸出,您的格式不正確。 –

+0

否。該格式僅用於顯示。當然,假設日期字段是數據類型Date,它們必須是。 – Gustav

+0

@krishKM:或者,如果字段是文本,則應用_DateValue_將本地化文本格式轉換爲日期值。 Se編輯。 – Gustav