2016-11-09 97 views
0

出於測試目的,我想從一個MS Access表中的一些數據得到使用VBA和SQL Excel中的記錄(方向:EXCEL + VBA訪問)。SQL查詢從通過VBA Excel來訪問(特定日期)

MS Access表名爲T_Zeiten,一列爲zeiDat,其中包含日期(歐式風格,如09.11.2016)。

我想要做的是打開連接,查找兩個特定日期之間的所有條目,並將它們寫入記錄集。我已經設法打開連接,但與日期的東西(美式日期)鬥爭。 Excel中的「From」和「To」日期也被格式化爲「dd.mm.yyyy」。

這是我到目前爲止有:

Dim cn As Object 
Dim ZeitenArbeitenGrob As Recordset 
Dim strSqlZeitenArbeitenGrob As String 
Dim start As String 
Dim ende As String 
start = Application.WorksheetFunction.Text(Cells(3, 2), "dd/mm/yyyy") 
ende = Application.WorksheetFunction.Text(Cells(4, 2), "dd/mm/yyyy") 
Dim strConnection As String 
celllocation = 6 
Set cn = CreateObject("ADODB.Connection") 
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=C:\Users\mj\Downloads\Neuer Ordner (2)\ZeitErfKonst.mdb" 
strSqlZeitenArbeitenGrob = "SELECT COUNT(zeiDat) FROM T_Zeiten WHERE [zeiDat] BETWEEN #" & start & "# And #" & ende & "#" 
cn.Open strConnection 
Set ZeitenArbeitenGrob = cn.Execute(strSqlZeitenArbeitenGrob) 
MsgBox ZeitenArbeitenGrob.Fields(0) 

有15項,但在MessageBox顯示我213,我不知道爲什麼。

+0

哪些數據類型具有zeiDat場? – matellan

+0

日期/時間(使用德語版猜測它就是這樣稱呼的) – Moritz

回答

1

您需要使用明確格式的日期值的字符串表達式:

start = Application.WorksheetFunction.Text(Cells(3, 2), "yyyy/mm/dd") 
ende = Application.WorksheetFunction.Text(Cells(4, 2), "yyyy/mm/dd") 
+0

完美運作,謝謝! – Moritz