从Excel通过VBA到Access的SQL查询(特定日期)

时间:2016-11-09 07:09:17

标签: sql excel-vba ms-access vba excel

出于测试目的,我试图使用vba和SQL(方向:Excel + VBA访问)从MS Access表中获取一些数据到Excel中的记录集。

MS Access表名为T_Zeiten,一列名为zeiDat,其中包含日期(欧洲风格,如09.11.2016)。

我想要做的是打开一个连接,查找两个特定日期之间的所有条目,并将它们写入记录集。我已经设法打开一个连接,但很难与日期的东西(美式日期)。 Excel中的“发件人”和“收件人”日期也格式化为“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个条目,但是消息框显示我213,我不知道为什么。

1 个答案:

答案 0 :(得分:2)

您需要对日期值的字符串表达式使用明确的格式:

expect(values[0] == searchtxt || values[1] == searchtxt || values[2] == searchtxt).toEqual(true);