アプリ版:「スタンプのみでお礼する」機能のリリースについて

まだVB歴1年ないので説明もうまくできないかも知れませんが
どなたか教えていただければ助かります。

Dim cn as ADODB.Connection
Dim rs as ADODB.Recordset

Set cn = New ADODB.Connection
cn.IsolationLevel = adXactRepeatabelRead
cn.Open *****

Set rs = New ADODB.Recordset
rs.CursorType = adOpenDynamic
rs.LockType = asLockPessimistic
rs.ActiveConnection = cn
rs.Open *****

上記のように設定したのち
データ読み込み

rs.MoveFirst
Do until rs.EOF
aaa = rs.Fields("ID").Value
   中略
rs.MoveNext
Loop

ファイルクローズして他の処理したのち
再びファイルオープンして

rs.MoveFirst
For ***
Set rs = cn.Execute("UPDATE テーブル名 SET ID = ***** ")
中略
rs.MoveNext
Next ***

ファイルクローズ

上記のMoveNextがおかしいと思うのですが
他のところかもしれませんが悩んでいます。
この内容でわかっていただけるか心配ですが
よろしくお願いします。

A 回答 (3件)

レコードを読んで、更新をかけるのであれば、


コネクションのExecuteメソッドではなく、レコードセットのUpdateメソッドを使わなくてはなりません。

Executeメソッドの戻り値は、レコードセットオブジェクトじゃありませんので、「Set rs = cn.Execute("UPDATE テーブル名 SET ID = ***** ") 」でおかしなこと(エラーになるんじゃ?)になっていると思うのです。

レコードを読む必要がないのであれば、Executeだけで良いですよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。昨日うまく動作しました。
今回で少し理解しました。本当に助かりました。

お礼日時:2002/10/03 10:06

2つ目のループがおかしいですね。


ループではrsを回していますが、その中でrsを使って別のレコードセットを取得しちゃってます。
rs以外の変数を使ってみて下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。まだまだ勉強不足でわからないことばかりで
理解するのも一苦労ですが、昨日うまく動作しました。本当に助かりました。

お礼日時:2002/10/03 10:09

テストできる環境が無いので間違ってるかもしれませんが



レコードセットrsを使用して処理を進めているのに
Set rs = cn.Execute("UPDATE テーブル名 SET ID = ***** ")
とするとrsが初期化(というか新規作成)されてしまうのでは?
    • good
    • 0
この回答へのお礼

テストできる環境ではないのに回答していただきありがとうございました。
昨日うまく動作しました。本当に助かりました。

お礼日時:2002/10/03 10:13

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

このQ&Aを見た人はこんなQ&Aも見ています