
エクセルからアクセスヘ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)
です。
ご教授よろしくお願いします。
No.3ベストアンサー
- 回答日時:
フィルターに文字列として渡さなくてはいけないので
RS.Filter = ("URL = 'www.yahoo.co.jp' And 終了 = " & False) Or ("URL = 'www.google.co.jp' And 終了 = " & False)
↓
RS.Filter = "(URL = 'www.yahoo.co.jp' And 終了 = " & False & ") Or (URL = 'www.google.co.jp' And 終了 = " & False & ")"
じゃないですか?未検証です。
RS.Filter = "(URL = 'www.yahoo.co.jp' And 終了 = " & False & ") Or (URL = 'www.google.co.jp' And 終了 = " & False & ")"
で出来ました!!!ありがとうございました。
No.2
- 回答日時:
Officeのバージョンはいくつでしょう。
2010ではAccessでもExcelでもVBEの画面でヘルプ(F1キー)で
論理演算子で調べると、『演算子の優先順位』の説明が有ります。
算術演算子(+-*/)の
1+2*3 ≠ 9 、1+2*3 = 7 と同様に
論理演算子ではAnd が先に評価されその後で Or を評価します。
なので
・www.yahoo.co.jp
・www.google.co.jp
のどちらかの文字列を含み、なおかつ
終了フィールドにチェックがついてない(値は0)
はイメージ的には(手抜き回答ですが)
yahoo OR google AND false では、
google AND false の評価を行い、
『それから得たもの』 OR yahoo の評価に進みます。
ですので、
(yahoo AND false) OR (google AND false) のように組み立てる必要が有ります。
ご回答ありがとうございます。
説明不足ですいません。バージョンは2007です。
演算子の優先順位をよく見て考えるべきでしたね。
ちなみに
RS.Filter = ("URL = 'www.yahoo.co.jp' And 終了 = " & False) Or ("URL = 'www.google.co.jp' And 終了 = " & False)
にしてみたのですが
「型が一致しません。(Error 13)」になってしまいます。
何が間違ってるのでしょうか?
再度ご回答頂ければ幸いです。よろしくお願いします。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleの巡回がこない…
-
変なサイトが立ち上がります
-
クラウドを利用したい
-
坂田知美さんについて。
-
googleplay ギフトカードについて
-
GOOGLE
-
都営住宅の申込書ありませんか?
-
DivXのバージョンについて
-
googleの登録について
-
恥ずかしながら、ご質問します...
-
サブドメインでGoogle Appsを使...
-
フリーメール 自動転送メール
-
google scholar
-
Googleなどの検索エンジンに登...
-
VBA ADO 複数条件のフィルタ
-
確信犯という言葉について
-
どれくらいの冗談なら笑ってい...
-
携帯サイトの検索結果順位を調...
-
なぜhttp:/ ?
-
閲覧したサイトのPC内の保存場所
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【google One】グーグルワンの...
-
Google Colaboratoryでマウント...
-
★HPが検索エンジンにひっかか...
-
住所を書いた自分のウェブサイ...
-
google検索の結果反映がおかしい
-
グーグルを使った検索方法につ...
-
webページの日付を確認するには?
-
Googleドライブについて
-
googleの追加登録
-
googleプレイ内の検索履歴の過...
-
サブドメインでGoogle Appsを使...
-
Googleマップの口コミの削除
-
VBA ADO 複数条件のフィルタ
-
検索エンジンのキャッシュの削...
-
Google Chrome 背景色?を変えた...
-
VisualBasic2.0の...
-
坂田知美さんについて。
-
googleの検索帯を一旦完全に排...
-
フリーメール 自動転送メール
-
googleplayのブックスからアダ...
おすすめ情報