- 締切済み
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です。
- adochan
- お礼率33% (3/9)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jazzlover
- ベストアンサー率0% (0/0)
LOOPの後に条件を入れると最後のデータが更新されないのでは?。DOの後にRS.Editが必要です。よって以下のようにするのが正当だと思います。 Do Until rs.EOF rs.Edit rs!分類ID = text1 rs.Update rs.MoveNext Loop それと2番目の構文だと最後のデータに来たら一つ前に戻ると命令していたら終わらないんでは? いずれも確認していないのでわかりませんが。
関連するQ&A
- C#でDBの特定列をUpdate
初歩的な質問ですいません。C#でテーブルを指定して、特定列のみ変更するにはどうすれば良いんでしょうか。 VBでしたら、下記のコードで行けますが、どなたか教えてください。 rs.Open "売上", cn Do Until rs.EOF rs.Update "売上額", rs!売上額 * 1.05 rs.MoveNext Loop
- ベストアンサー
- C・C++・C#
- access vbでループ処理
レコードセットでテーブルの内容をフォームのテキストボックスに表示 させたいのですが、vbの知識が無く困ってます。以下の処理をループ処理で 簡単に出来ないでしょうか。 ' PASU1 = rs!PASU ' rs.MoveNext ' PASU2 = rs!PASU ' rs.MoveNext ' PASU3 = rs!PASU ' rs.MoveNext ' PASU4 = rs!PASU ' rs.MoveNext ' PASU5 = rs!PASU ' rs.MoveNext ' PASU6 = rs!PASU レコードセットは, Do Until rs.EOF loop を用いれば繰り返し出来ると解っているのですがフォームの, PASU[1,2,3,,,]の数字の部分を指定することが出来ずにいます。 変数など駆使すれば出来ると思うのですが良くわかりません。 どなたか教えてください。
- ベストアンサー
- その他(データベース)
- ASPのSession変数を配列にしたいのですが。。。
ASPのSession変数を配列にして使用したいのですが、どのように表記すればいいのでしょうか? Do Until rs.EOF ID=Session("ID(i)") i=i+1 rs.MoveNext Loop という感じに使用したいのですが。。。
- 締切済み
- Microsoft ASP
- ループ処理の繰り返しについて
お世話になっております。 単純なことで悩んでおります、どなたかわかるかたお願いいたします。 <% DO UNTIL SQLrs.EOF IF a=0 THEN %> 処理1 <% END IF SQLrs.MOVENEXT LOOP %> <% SQLrs.MOVEFIRST DO UNTIL SQLrs.EOF IF b=0 THEN %> 処理2 <% END IF SQLrs.MOVENEXT LOOP %> 上記のような処理順なのですが、問題は MoveFirstで先頭のレコードにもどらないのか、2回目のループ処理がうまく抽出できません。 原因はわかりますでしょうか?
- ベストアンサー
- Microsoft ASP
- レコードセットのループ処理でエラー・・・
簡単なことだと思うのですが、解決できなくこまっております。お助けください。 以下のコーディングで、データの取得は出来ているのですが、「Do Until rs1.EOF」でエラーとなります。 SOURCE----------------------------------------- sql = "Select No from t01" Recordset.Open sql, dbc, 3 If rs1.EOF Then Response.Write "データナシ<BR>" ←表示されません。 else Do Until rs1.EOF ←この行でエラーとなります。 Response.Write "No=" & rs1("No").Value rs1.MoveNext Loop end if Error-------------------------------------------- ADODB.Field (0x80020009) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 因みに、Do Untilを使用せず Response.Write "No=" & rs1("No").Value rs1.MoveNext Response.Write "No=" & rs1("No").Value と記述すると正常にデータが表示されます。 「Do Until rs1.EOF」で発生するエラーの回避方法を御教示願います。
- 締切済み
- Microsoft ASP
- Do Untilで途中で抜け出る方法は
Do Until rs.EOF myCtr = myCtr + 1 If myCtr > 5 Then brake End If Debug.Print rs!品番, rs!品名 rs.MoveNext Loop こんな感じでできませんか 実行してみると brakeのところでエラーになります ACCESSの中のVbでADOを使っています
- ベストアンサー
- Visual Basic
- Do Until rs1.EOF であるレコードをスキップしたい
ACCESS2007のVBについて教えて下さい。 テーブルをオープンし RecordSetとして、rs1、に読み込まれてきます。 あるフィールド、廃油計がゼロのときは、そのレコードに対し 処理をスキップしたいのです。 苦しまぎれに、下記のように Continue、を使うとContinueが関数とみなされてしまいます。 ある、レコードをスキップさせたいとき、 そのようにCoding、したらいいのでしょうか? --------------------------------------- Do Until rs1.EOF If rs1![廃油計] = 0 Then continue End If ' '処理 ' rs1.MoveNext Loop ------------------------------------ よろしくお願いします。
- ベストアンサー
- Visual Basic
- 【VB】コンボボックスにデータベースから取り出した値を入れたい
VB2005です。 表題の通りですがやり方がよくわかりません。 データベースに接続し、 SQLで重複しない値を取り出すところまではできています。 SQL=SELECT DISTINCT FieldName FROM TableName VB6の時はこんなソースでした Do Until rs.EOF Combo1.AddItem.Fields("FieldName") rs.MoveNext Loop VB2005ではどう書くのでしょう? よろしくご教授ください。
- ベストアンサー
- Visual Basic
- 重複チェック
いま、重複チェックをしているのですが、MoveFirstで データをある分だけ調べていて、データが重複してなかったら、データを更新したいのですが、はじめにMoveFirst で、データを調べたので、カレント行が最終行にあると思うので、それを例えば、3行目のデータだったり、5行目のデータを変更したいのですが、よろしくお願いします。 重複チェック rs.MoveFirst Do While Not rs.EOF If Text2(0).Text <> rs.Fields(1) Then rs.MoveNext End If Loop rs.Fields(1) = Text2(0).Text
- 締切済み
- Visual Basic
- カレント行取得
Do While Not rs.EOF If Text1(0).Text <> rs.Fields(1) Then /*--*--*/ rs.MoveNext Else msg = "コードが重複しています." MsgBox msg, vbOKOnly, "重複チェック" Text1(0).Text = "" Text1(0).SetFocus End If Loop *------ text1(1) = rs.fields(1) text1(2) = rs.fields(2) -------* データベース(Access)にデータが3件入っていて、例えば、1件目のデータを更新したいのですが今のソースでは、/*--*--*/でデータベースを次々読んでいるので、3件読み終えたときにカレント行が4件目にあると思うので、それを”任意”の行にしたいのですが教えてください。
- 締切済み
- Visual Basic
補足
早々に回答ありがとうございます。 抽出しないでrs.Updateするときには、 IF rs.EOF then rs.MovePrevious End If があるとあきらかにおかしいですよね。 抽出せずにUpdateするときには、 do rs!分類ID = text1 rs.update Loop until rs.EOF でうまく動くのに抽出してからrs.Updateするときにはこれがないとうまく動かないのです。。。。 へんですよね~