• 締切済み

VB6.0DataGridでのUpdate文で疑問?

ADOの勉強したばっかりで、あまり詳しくありませんのでよろしくお願いします。 DataGridを使ってある条件で抽出しています。その抽出したものを更新したいのですが、 Do rs!分類ID = text1 rs.Update rs.MoveNext Loop Until rs.EOF という命令を書くと、いいような気がするのですが、なぜか抽出したデータが一個おきに書き換わります。 でも、 Do rs!分類ID = text1 rs.Update rs.MoveNext  if rs.EOF then rs.Previous END IF Loop Until rs.EOF と命令するとすべてのデータが書き換わります。 なぜなんでしょうか?疑問です。 VB6.0、ACCESS2000です。

みんなの回答

回答No.1

LOOPの後に条件を入れると最後のデータが更新されないのでは?。DOの後にRS.Editが必要です。よって以下のようにするのが正当だと思います。 Do Until rs.EOF rs.Edit rs!分類ID = text1 rs.Update rs.MoveNext Loop それと2番目の構文だと最後のデータに来たら一つ前に戻ると命令していたら終わらないんでは? いずれも確認していないのでわかりませんが。

adochan
質問者

補足

早々に回答ありがとうございます。 抽出しないでrs.Updateするときには、 IF rs.EOF then rs.MovePrevious End If があるとあきらかにおかしいですよね。 抽出せずにUpdateするときには、 do rs!分類ID = text1 rs.update Loop until rs.EOF でうまく動くのに抽出してからrs.Updateするときにはこれがないとうまく動かないのです。。。。 へんですよね~