• ベストアンサー

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

エクセルvbaなのですが、 adoのWHERE句は、テーブルじゃないとダメなのでしょうか? と言うのも、 rs.Open "Q_カテゴリ WHERE 分類 like '%A%'" だと、エラーにならないのですが、抽出もされずに全レコードが対象になってしまいます。 しかし、 rs.Open "T_カテゴリ WHERE 分類 like '%A%'" にすれば、抽出された後のレコード数が取得されます。 エラーにならない事から、オブジェクトは存在してる事は確かなはずですが なぜかフィルタできません。 なぜでしょうか?

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

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 のようにしてクエリをレコードセットとして開きます。

VXIXSDFU
質問者

お礼

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

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> rs.Open "Q_カテゴリ WHERE 分類 like '%A%'" 名称が Q で始まってるからにはクエリなんでしょ? クエリの結合時になんらか失敗して、Nullになってませんか? rs.Open "Q_カテゴリ WHERE 分類 is null; rs.Open "Q_カテゴリ WHERE 分類 is not null; で結果見てみるとか。

VXIXSDFU
質問者

お礼

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

関連するQ&A

専門家に質問してみよう