- ベストアンサー
adoのWHERE句 クエリだとフィルタされない
エクセルvbaなのですが、 adoのWHERE句は、テーブルじゃないとダメなのでしょうか? と言うのも、 rs.Open "Q_カテゴリ WHERE 分類 like '%A%'" だと、エラーにならないのですが、抽出もされずに全レコードが対象になってしまいます。 しかし、 rs.Open "T_カテゴリ WHERE 分類 like '%A%'" にすれば、抽出された後のレコード数が取得されます。 エラーにならない事から、オブジェクトは存在してる事は確かなはずですが なぜかフィルタできません。 なぜでしょうか?
- みんなの回答 (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 のようにしてクエリをレコードセットとして開きます。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
> rs.Open "Q_カテゴリ WHERE 分類 like '%A%'" 名称が Q で始まってるからにはクエリなんでしょ? クエリの結合時になんらか失敗して、Nullになってませんか? rs.Open "Q_カテゴリ WHERE 分類 is null; rs.Open "Q_カテゴリ WHERE 分類 is not null; で結果見てみるとか。
お礼
どうもありがとうございました。
お礼
どうもありがとうございました。