【ADO】mdbのレコードの条件検索
日付+特定のレコードの値が優のレコードをExcelのセルに表示するマクロを組んでいます。
Option Explicit
Const cnsADO_CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Dim dbCon As New ADODB.Connection
Dim dbRes As New ADODB.Recordset
Dim dbCols As ADODB.Fields
Dim strStartData As String, strEndData As String
Dim strsql As String
Dim Gyo As Long
Public Sub testテスト()
'テスト用
strStartData = 20120401
strEndData = 20130331
'接続mdb名
FileName = \\~~テスト.mdb
dbCon.Open cnsADO_CONNECT1 & FileName
strsql = "SELECT * FROM テーブル名 WHERE 日付 BETWEEN '" & strStartData & "' AND '" & strEndData & "' ORDER BY 日付"
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly
strsql = Replace(strsql, "strEndData", strEndData)
strsql = Replace(strsql, "strStartData", strStartData)
dbRes.Filter = "座学判定 = '優' or WHERE 実技判定 = '優' "
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly ←ここでエラー
Gyo = 1
Rows("2:65536").ClearContents
dbRes.MoveFirst
Do Until dbRes.EOF
' 行の変数を加算し必要項目を選択してセルにセット
Gyo = Gyo + 1
Set dbCols = dbRes.Fields
'DT_P_点検Tblテーブルよりを抜き出す
Cells(Gyo, 1).Value = dbCols("ID").Value
Cells(Gyo, 2).Value = dbCols("日付").Value
Cells(Gyo, 3).Value = dbCols("座学判定").Value
Cells(Gyo, 4).Value = dbCols("実技判定").Value
' 次のレコードに移る
dbRes.MoveNext
Loop
' レコードセット、データベースを閉じる
dbRes.Close
Set dbRes = Nothing
dbCon.Close
Set dbCon = Nothing
End Sub
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly の部分でエラーになってしまいます。
「CommandオブジェクトのCommandTextが設定されていません」と表示されます。
dbRes.Filter = "座学判定 = '優' or WHERE 実技判定 = '優' "
ここの部分が無ければ、指定の期間のデータを抽出してくれています。
指定期間 + 特定の部分がTrueの場合の抜き出しをしたいのですが、どこかで指定が不足しているのでしょうか?
お礼
問題が解決しました。 ありがとうございました