- ベストアンサー
ADOでBetweenは使えないのでしょうか?
- ADOで期間での抽出をしたい場合、rs.Filterを使うことで範囲指定が可能です。
- しかし、rs.Filterでの計上日のBetween条件を使おうとすると実行時エラー3001が発生します。
- このエラーは、引数が間違った型、許容範囲外、または競合していることを示しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足: 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
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
http://okwave.jp/qa/q8322811.html http://soudan1.biglobe.ne.jp/qa8322811.html に似た(同類の)質問・回答があるのでは。 Googleで「ADO filter Between」で照会すれば出てくる。 この頃はWEB記事もOKWAVE(過去質問)も充実してきて、同じ(同類)質問があると思ったほうがよさそうだよ。
お礼
ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
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
お礼
ありがとうございました。
お礼
ありがとうございました。