• 締切済み

Access のADOのrecordset

Access VBA でのrecordset はDAOとADOがあります。 DAOの場合recordsetからrecordsetを作成できました。 つまり、日本からある県を選び出し、その中から10代の人を選び出せました。 ところが、ADOの場合それができません。ある県の10代の人を選び出そうとしても、 結果的に全日本の10代の人となってしまいます。 例として RD1.Filter = "購入日># " & DateAdd("yyyy", -1, Date) & "#" Set RD2 = RD1.OpenRecordset この「RD2」という新しいrecordsetができます。 RD2は購入日が今日から1年前の1つのファイルとしてsetされます。 この中から山田さんの売り上げを集計することができます。 ところが、ADOの場合下記のように書いて、 str = RS!ブランド RS.Filter = ("ブランド = " & "'" & str & "'") RS.MoveFirst str = RS!名前 RS.Filter = ("名前 = " & "'" & str & "'") 上はある雑貨店のDBですが、あるブランドを抽出します。次にその中から、ある顧客の売り上げを集計する場合、結局全ブランドの”田中さん”になってしまいます。 要は、最初にブランドで抽出した意味がないのです、 ADOでDAOのようにrecordsetからrecordsetを作る方法はないのでしょうか? ADOの書き換えるのはMSのQSLserverがDAOの対応してないからです。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

ODBC経由ならDAO接続できる気がしますが http://www.accessclub.jp/bbs/0072/beginers27186.html ただ、SQL Serverを利用するということは複数ユーザーからの同時接続の可能性が高いと思います。 カーソルをサーバー側にするのかクライアント側にするのか、共有モードをどうするのかロック戦略をどのように選択するのか注意しないと不整合が起きたり、デッドロックにはまる気もしますが。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

filter、使ったことないけどandでつなげてみたらどうだろう。 rs.filter = ("ブランド = " & "'" & str1 & "' and 名前 ='" & str2 & "'") みたいに。  オイラは普通はSQLでレコードセットを取得する。 rst.open "SELECT * from table1 where ブランド = " & "'" & str1 & "' and 名前 ='" & str2 & "'" のような感じで。

tatutora
質問者

お礼

ご教授有難うございました。 たぶんその方法だと思います。 しかし、時間がないのと、めんどくさいのでやっていません。 今回ADO方式はあきらめました。 次回じっくりやりたいと思います。

関連するQ&A