2016-11-09 9 views
0

テスト目的で、MS AccessテーブルからvbaとSQL(方向:Excel + VBAアクセス)を使用してExcelのレコードセットにデータを取得しようとしています。VBAからSQLへのアクセス(日付別)

MSアクセステーブルはT_Zeitenと呼ばれ、1つの列はzeiDatと呼ばれ、日付(09.11.2016などのヨーロッパスタイル)が含まれています。

私がしたいことは、接続を開き、2つの特定の日付間のすべてのエントリを探し、それらをレコードセットに書き込むことです。私はすでに接続を開くことができましたが、日付のもの(USスタイルの日付)と闘いました。 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件のエントリがありますが、メッセージボックスには、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

関連する問題