こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

adoのWHERE句 クエリだとフィルタされない

エクセルvbaなのですが、
adoのWHERE句は、テーブルじゃないとダメなのでしょうか?

と言うのも、
rs.Open "Q_カテゴリ WHERE 分類 like '%A%'"
だと、エラーにならないのですが、抽出もされずに全レコードが対象になってしまいます。

しかし、
rs.Open "T_カテゴリ WHERE 分類 like '%A%'"
にすれば、抽出された後のレコード数が取得されます。

エラーにならない事から、オブジェクトは存在してる事は確かなはずですが
なぜかフィルタできません。

なぜでしょうか?

投稿日時 - 2014-01-25 23:25:56

QNo.8446721

暇なときに回答ください

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

Excelのバージョンは古いですが、
保存済みのクエリを指定してレコードセットを
開く場合、フィルタをかけるならば、
たとえば、住所録で住所が「東京」の
住所を求める場合、


Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim varAdo As Variant
Dim i As Long
Dim varSheet As Variant

  varAdo = ActiveWorkbook.Path & "\sample1.mdb"

  cn.ConnectionString = "provider=Microsoft.jet.OLEDB.4.0;" _
        & "Data Source=" & varAdo & ""
  cn.Open
  rs.Source = "Q住所録"
  rs.Filter = "[住所] = '東京'"
  rs.CursorType = adOpenDynamic
  rs.ActiveConnection = cn
  rs.Open

  varSheet = ActiveSheet.Name
  i = 5

  Do Until rs.EOF
    With Worksheets(varSheet)
      .Cells(i, 1).Value = rs!ID
      .Cells(i, 2).Value = rs!名前
      .Cells(i, 3).Value = rs!住所
      .Cells(i, 4).Value = rs!年齢
    End With
    i = i + 1
    rs.MoveNext
  Loop
  rs.Close: Set rs = Nothing
  cn.Close: Set cn = Nothing

のようにしてクエリをレコードセットとして開きます。

投稿日時 - 2014-01-26 02:12:20

お礼

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

投稿日時 - 2014-02-17 23:19:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> rs.Open "Q_カテゴリ WHERE 分類 like '%A%'"
名称が Q で始まってるからにはクエリなんでしょ?

クエリの結合時になんらか失敗して、Nullになってませんか?

rs.Open "Q_カテゴリ WHERE 分類 is null;

rs.Open "Q_カテゴリ WHERE 分類 is not null;

で結果見てみるとか。

投稿日時 - 2014-01-25 23:40:00

お礼

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

投稿日時 - 2014-02-17 23:20:01

あなたにオススメの質問