• ベストアンサー

ADOで日付に対してフィルタをかける

AKARI0418の回答

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.2

>そもそも「#」を付けるのかわかりません。 「#」をつけると #で囲むと日付型として認識させることができます。 日付型の書式は #月/日/年# となります。 したがって 2008年4月1日は #04/01/2008# または #4/1/08# となります。

quygquygqu
質問者

お礼

ありがとうございます。 と言うことは日付型のデータを取得するなら rs.Filter = " 取得日時 > 04/01/08 " より rs.Filter = " 取得日時 > #04/01/08# " のほうがいいのでしょうか?

関連するQ&A

  • アクセス ADO Null以外のレコードの件数を取得したい

    アクセス ADO Null以外のレコードの件数を取得したい テーブルにレコードが100行あり、そのうちNull値は40行あります。(主キーではないです) この時、ADOでNull以外にフィルタをかけたいのですが For i = 1 To RS.RecordCount RS.Filter = "フィールド = '*'" でも RS.Filter = "フィールド = 'Null''" でも、文字列になってしまい、うまくいきません。 RS.Filter = "フィールド " <> 'Null' だとエラーになります。 「<>null」を抽出する方法をご教授願います。

  • ADOでアクセスのレコードに複数のフィルタをかけるには?

    Sub ADO() Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & アクセスファイル名 Set rs = New ADODB.Recordset rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic rs.Filter = ("フィールド1 = " & "'" & 変数1 & "'") rs.Filter = ("フィールド2 = " & "'" & 変数2 & "'") Debug.Print rs.RecordCount Set rs = Nothing Set cn = Nothing End Sub だと最終的にはフィールド2のフィルタ後の個数しか取得できません。 rs.Filter = ("案件CD = " & "'" & 案件CD & "'" And "プロセス = " & "'" & プロセス & "'") だと「型が一致しません」になります。 どうすれば変数1と変数2のフィルタ後のレコードの個数を取得できるのでしょうか? ご教授よろしくお願い致します。

  • ADOでNULLのレコードを抽出したい

    ADOでNULLのレコードを抽出したいのですがうまくできません。 Q全てクエリには、登録日フィールドや登録数フィールドがあります。 登録数フィールドは数値です。 その登録数フィールドがnullのレコードを抽出したいです。 RS.CursorLocation = adUseClient RS.Open "Q全て", cn, adOpenKeyset, adLockOptimistic RS.Sort = "登録日 DESC" RS.Filter = "[登録数] = NULL" RS.Filter = "IsNull(登録数) = True" RS.Filter = "登録数 Is Null" ↑これどれをやってもエラーになります。 対策をお願いします。

  • VBA ADO 複数条件のフィルタ

    エクセルからアクセスヘADOで接続し、レコードをエクセルに書き出しています。 アクセスのTPWIDには、 「URL」フィールド(テキスト型) 「終了」フィールド(YesNo型) があります。 (主キーは他のフィールド) エクセルVBAで --------------------------------------------------------- Sub test() Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\テーブルのみ.mdb" RS.Open "SELECT * FROM TPWID", CN, adOpenStatic, adLockOptimistic RS.Filter = "終了 = " & False RS.Close: Set RS = Nothing End Sub --------------------------------------------------------- とする分には問題なくできますが、実際行いたい行為は下記なのですが RS.Filter の部分で、 「実行時エラー 3001 引数が間違った型、許容範囲外、又は競合しています」 と言うエラーになってしまいます。 --------------------------------------------------------- Sub test() Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\テーブルのみ.mdb" RS.Open "SELECT * FROM TPWID", CN, adOpenStatic, adLockOptimistic RS.Filter = "URL = '" & "www.yahoo.co.jp" & "' or URL = '" & "www.google.co.jp" & "' And 終了 = " & False RS.Close: Set RS = Nothing End Sub --------------------------------------------------------- RS.Filter = "URL = '" & "www.yahoo.co.jp" & "' or URL = '" & "www.google.co.jp" & "' And 終了 = " & False を RS.Filter = "URL = '" & "www.yahoo.co.jp" & "' and URL = '" & "www.google.co.jp" & "' And 終了 = " & False にすれば、エラーは発生しませんが その次のコードを実行しようとすると 「実行時エラー'3021' BOFとEOFのいずれかTRUEになっていか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。」 となってしまいます。 MsgBox RS.RecordCount で件数を取得したら0件なので、それでエラーになります。 条件としては、 URLフォールドでは ・www.yahoo.co.jp ・www.google.co.jp のどちらかの文字列を含み、なおかつ 終了フィールドにチェックがついてない(値は0) です。 ご教授よろしくお願いします。

  • ADOで現在のレコードの次のレコードの値も取得

    ADOで現在のレコードの次のレコードの値も取得するには? アクセスに対してADOでデータを取得しているのですが 例えばテーブルに フィールド1 あああ いいい ううう と入ってる時に、1レコード目のあああの値を取得しているときに、同時に次のレコードのいいいの値も取得することは可能ですか? Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM テーブル1", cn, adOpenStatic, adLockPessimistic For i = 1 To rs.RecordCount MsgBox rs("フィールド1") '現在のレコード MsgBox rs("フィールド1") + 1 '次のレコード rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub これだとダメなようです。 あああ いいい が表示されるようにしたいのですが、どうすればいいか教えてください。

  • アクセスADO 複数のレコードがあるのに-1が返る

    アクセスのADOを作っています。 テーブルにレコードは複数あるのですが、Filterをすると必ず-1が返ります。 どうしてでしょうか? エラーになってるのでしょうか? ---------------------------------------------------- Set cn = CurrentProject.Connection myStr = "test" rs.Open "Tテーブル", cn, adOpenForwardOnly, adLockReadOnly rs.Filter = ("フィールド1=" & "'" & myStr & "'") MsgBox rs.RecordCount ’マイナス-1になる rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing ---------------------------------------------------- rs.Open の下に、MsgBox rs.RecordCountを置いても、-1になることから、Filter のせいではないと思うのですが 原因がわかりません。 ご教授よろしくお願いします。

  • 「2月」でフィルタをかけたい。

    オフィス2003です。 テーブル1の 日付フィールドには「yyyy/mm/dd hh:nn」形式でいくつかの日付の入力されたレコードがあります。 エクセルのADOを使って テーブル1から「2月」のレコードをフィルタをかけて抽出したいのですがうまく行きません。 Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Desktop\db1.mdb" Set rs = New ADODB.Recordset rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic rs.Filter = ("日付 = " & "'" & Month(Date) & "'") rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub を実行すると「種類が一致しません」というエラーになります。 どうすれば2月のデータを取得できるのでしょうか? ご教授よろしくお願いします。

  • ADO 「今日より5日以上前」というフィルタをかけたい

    先ほどこちら(http://oshiete.sponichi.co.jp/qa4869215.html)で質問した者です。 (n-junさまありがとうございました。) 「rs.Filter = "進捗 = '未'"」 で 「進捗」フィールドはフィルタをかけられたのですが 更に 「依頼日」が今日より5日前以上のデータを抽出したいのです。 (今日が2009/4/10なので、「~2009/4/5」のデータ(2009/4/5も含む)) 下記全てエラーになってしまいます。 「rs.Filter = "依頼日= '<#2009/4/5#'"」 「rs.Filter = "依頼日= <#2009/4/5#"」 「rs.Filter = "依頼日= <2009/4/5"」 再度ご教授よろしくお願いします!!!!

  • アクセスADO シングルコーテーションを含む抽出

    テーブルに例えば、 「I's」という文字があり、これをADOを抽出する際は、フィルタでどういう文字列を作ればよろしいでしょうか? rs.Filter = "フィールド1 = 'I'''s'" rs.Filter = "フィールド1 = 'I's'" rs.Filter = "フィールド1 = 'I" '"s'" ’コメントになってしまう 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 が発生します。 よろしくお願いします。

  • WHERE レコードが抽出されない

    ADOでSQL文を作ってるのですが WHERE句がうまくできません。 rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "URL like '#*'" なら、うまくいくのですが、 Filterを使うのをやめて、WHEREに書きかえると、エラーにはならないのですが 取得レコードが0件になります。 rs.Open "T_テーブル WHERE [URL] like '#*';", cn, adOpenKeyset, adLockOptimistic も rs.Open "T_テーブル WHERE URL like '#*';", cn, adOpenKeyset, adLockOptimistic も、0件が返ります。 何がおかしいのでしょうか? URLフィールドで、#で始まるレコードを抽出したいです。