ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ADOデータベース!コミュのSQLクロス集計クエリにFilterメソッドを使いたい

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんにちは。
探してみたのですが、見つからなかったのでトピ立てさせていただきます。
既出でしたらご指摘下さい。

よろしくお願いします。


Q_Query1で、ID(主キー)をグループ化してをクロス集計して出した合計値「金額の合計」を、T_Table1の「合算」というフィールドにコピーする(Update)プログラムを下記の通り作りました。

実行時エラー3021というエラーが出て、 rs1.Update "合算", rs!金額の合計 の部分で止まってしまいます。

エラー内容は、EOFかBOFがTrueになっているかカレントレコードが存在しない、というものですが、T_Table1にはレコードがたくさんあります。

また、SQLのクロス集計クエリについても、Do Until 〜Loopの間をイミディエイトでデバックするときちんと出てくるので、クエリ集計に問題がなく、レコードセットが抽出されている、と考えています。

ということは、上記のようなエラーが出るはずないと思うのですが、理由がわからなくて困っています。

ひょっとして、SQLのクロス集計クエリにはFilterメソッドは使用できない、など、そもそものルールがあるのでしょうか。

もしお分かりになる方がいらっしゃいましたら、お教え下さい。
よろしくお願いします。

下記、実際のコードを記します。



Public Sub copy()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim cmd As New ADODB.Command

Set cn = CurrentProject.Connection
Set cmd.ActiveConnection = cn

rs1.Open "T_Table1", cn, adOpenKeyset, adLockOptimistic, _
adCmdTableDirect

cmd.CommandText = "select Q_Query1.ID, sum(Q_Query1.Price) as 金額の合計 & _
" from Q_Query1 group by Q_Query.ID;"

Set rs = cmd.Execute


Do Until rs.EOF

rs1.Filter= "ID=" & rs!ID
rs1.Update "合算", rs!金額の合計
rs.MoveNext

Loop

rs.Close: Set rs = Nothing
rs1.Close: Set rs1 = Nothing
cn.Close: Set cn = Nothing

コメント(1)

Accessのコミュで解決いたしました。
見ていただいた皆様、ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

ADOデータベース! 更新情報

ADOデータベース!のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。