• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:adoでBetween は使えないのでしょうか?)

ADOでBetweenは使えないのでしょうか?

このQ&Aのポイント
  • ADOで期間での抽出をしたい場合、rs.Filterを使うことで範囲指定が可能です。
  • しかし、rs.Filterでの計上日のBetween条件を使おうとすると実行時エラー3001が発生します。
  • このエラーは、引数が間違った型、許容範囲外、または競合していることを示しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

補足: Filter と日付範囲の指定 ANDを使います。 Public Function DBSelectII(ByVal strQuerySQL As String, _               ByVal strFilter As String, _              Optional strPause As String = ";") As String On Error GoTo Err_DBSelectII   Dim I      As Integer   Dim J      As Integer   Dim R      As Integer ' 行インデックス   Dim M      As Integer ' 行総数 - 1   Dim rst     As ADODB.Recordset   Dim fld     As ADODB.Field   Dim strList   As String ' 全てのデータを区切子で連結して格納      Set rst = New ADODB.Recordset   With rst     .Open strQuerySQL, _        CurrentProject.Connection, _        adOpenStatic, _        adLockPessimistic     If Not .BOF Then       .Filter = strFilter       M = .RecordCount - 1       .MoveFirst       For R = 0 To M         For Each fld In .Fields           With fld             strList = strList & .Value & strPause           End With         Next fld         strList = strList & Chr(13)         .MoveNext       Next R     Else       strList = ""     End If   End With Exit_DBSelectII: On Error Resume Next   rst.Close   Set rst = Nothing   DBSelectII = IIf(Len(strList) > 0, Replace(strList & "[END]", Chr(13) & "[END]", ""), "")   Exit Function Err_DBSelectII:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelectII)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelectII End Function

KSGIHOCVBSSYH
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

http://okwave.jp/qa/q8322811.html http://soudan1.biglobe.ne.jp/qa8322811.html に似た(同類の)質問・回答があるのでは。 Googleで「ADO filter Between」で照会すれば出てくる。 この頃はWEB記事もOKWAVE(過去質問)も充実してきて、同じ(同類)質問があると思ったほうがよさそうだよ。

KSGIHOCVBSSYH
質問者

お礼

ありがとうございました。

回答No.1

https://msdn.microsoft.com/ja-jp/library/Cc426691.aspx Microsoft の Filter に関する説明を一読されてください。 >検索文字列は、「フィールド名-演算子-値」形式の句で構成されます。 つまりは、WHERE節とは書き方が違うってことです。添付図は、WHERE節でBETWEEN句を使った結果です。なお、DBSelect()ではADOを利用しています。 Public Function DBSelect(ByVal strQuerySQL As String, _              Optional strPause As String = ";") As String On Error GoTo Err_DBSelect   Dim I      As Integer   Dim J      As Integer   Dim R      As Integer ' 行インデックス   Dim M      As Integer ' 行総数 - 1   Dim rst     As ADODB.Recordset   Dim fld     As ADODB.Field   Dim strList   As String ' 全てのデータを区切子で連結して格納      Set rst = New ADODB.Recordset   With rst     .Open strQuerySQL, _        CurrentProject.Connection, _        adOpenStatic, _        adLockReadOnly     If Not .BOF Then       M = .RecordCount - 1       .MoveFirst       For R = 0 To M         For Each fld In .Fields           With fld             strList = strList & .Value & strPause           End With         Next fld         strList = strList & Chr(13)         .MoveNext       Next R     Else       strList = ""     End If   End With Exit_DBSelect: On Error Resume Next   rst.Close   Set rst = Nothing   DBSelect = IIf(Len(strList) > 0, Replace(strList & "[END]", Chr(13) & "[END]", ""), "")   Exit Function Err_DBSelect:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelect End Function

KSGIHOCVBSSYH
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう