これ何て呼びますか

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の対応してないからです。

A 回答 (2件)

ODBC経由ならDAO接続できる気がしますが


http://www.accessclub.jp/bbs/0072/beginers27186. …

ただ、SQL Serverを利用するということは複数ユーザーからの同時接続の可能性が高いと思います。
カーソルをサーバー側にするのかクライアント側にするのか、共有モードをどうするのかロック戦略をどのように選択するのか注意しないと不整合が起きたり、デッドロックにはまる気もしますが。
    • good
    • 0

filter、使ったことないけどandでつなげてみたらどうだろう。


rs.filter = ("ブランド = " & "'" & str1 & "' and 名前 ='" & str2 & "'")
みたいに。 

オイラは普通はSQLでレコードセットを取得する。
rst.open "SELECT * from table1 where ブランド = " & "'" & str1 & "' and 名前 ='" & str2 & "'"
のような感じで。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/07/03 09:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!