データベースをEOFまでループさせたい

このQ&Aのポイント
  • VB6.0上でループさせるコーディングと、最初の参照するプログラムがVB.NETで変わったため、ループする方法に四苦八苦しています。
  • Do UntilループをFor Eachループで書き直したいが、エラーが発生してしまいます。
  • ループを行いながらデータを取得するために、単純にEOFまでループさせたいというのが目的です。しかし、うまくいきません。
回答を見る
  • ベストアンサー

データベースをEOFまでループさせたい

データベースをEOFまでループさせたい 今までVB6.0上で下記のようなコーディングをしておりましたが 初VB.NET上コーディングで、参照にしたプログラムもがらっと変わり 四苦八苦しています><; 今まで ********* Do Until rs.EOF    aaa=rs("Log_Time")    rs.MoveNext Loop ********* これを Do~Loop でなく、For Each で書きたいと思うのですが 下記コーディングでエラーとなります。 エラー「型'System.Data.Datarow'の値を'integer'に変換できません」 For Each row As DataRow In rs.Tables(dataTableName).Rows    aaa = Me._rs.Tables(dataTableName).Rows(row)("Log_Time") Next やりたいことは単純にEOFまでループし、値を取得したいということなのですが・・・ うまくいきません。 EOFという概念もない様子?! どなたかヨロシクお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

VB.Netは詳しくないですが、パッと見てわかるのは「aaa=・・・」の行の誤りです。 For Each row As DataRow In rs.Tables(dataTableName).Rows    aaa = row("Log_Time") Next

bonn1117
質問者

お礼

ありがとうございます! 「rs.Tables(dataTableName).Rows」 までを持つことができるので 「aaa = row("Log_Time")」という記述になるのですね!!! おかげさまで解決いたしました!

関連するQ&A

  • 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 ------------------------------------ よろしくお願いします。

  • 【VB】コンボボックスにデータベースから取り出した値を入れたい

    VB2005です。 表題の通りですがやり方がよくわかりません。 データベースに接続し、 SQLで重複しない値を取り出すところまではできています。 SQL=SELECT DISTINCT FieldName FROM TableName VB6の時はこんなソースでした Do Until rs.EOF    Combo1.AddItem.Fields("FieldName")    rs.MoveNext Loop VB2005ではどう書くのでしょう? よろしくご教授ください。

  • 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,,,]の数字の部分を指定することが出来ずにいます。 変数など駆使すれば出来ると思うのですが良くわかりません。 どなたか教えてください。

  • レコードセットのループ処理でエラー・・・

    簡単なことだと思うのですが、解決できなくこまっております。お助けください。 以下のコーディングで、データの取得は出来ているのですが、「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」で発生するエラーの回避方法を御教示願います。

  • この行は既に別のテーブルに属しています

    以下のソースで、「この行は既に別のテーブルに属しています。」というエラーが出てしまいますが、対処方法がわかりません。 どのようにしたらよろしいでしょうか? VS2003のVBです。     Dim Table1 As DataTable = Me.DS1.Tables("データベース1")     Dim Table2 As DataTable = Me.DS1.Tables("データベース2")     Dim Row1 As DataRow     Dim Row2 As DataRow     Row1("データ1") = 1     Row1("データ2") = 2     Row1("データ3") = 3     Row2("データ1") = 2     Row2("データ2") = 3     Row2("データ3") = 4     Table2.Rows.Add(Row2) ←ここでエラー     Table1.Rows.Add(Row1) 'System.ArgumentException' のハンドルされていない例外が system.windows.forms.dll で発生しました。 追加情報 : この行は既に別のテーブルに属しています。

  • 配列と互換性のない型の要素にアクセスしようとしまし

    以下のソースでサブルーチン呼び出し行で例外「配列と互換性のない型の要素にアクセスしようとしました」が出ます。 -------------------------------------------------------------------------- Private Sub メインルーチン()  Dim Rows() As Data.DataRow = MyDataSet.Tables(MyTableName).Select("条件") if Rows.Count <> 0 then サブルーチン (Rows(0)) end if End Sub Private Sub サブルーチン(ByRef Row As Data.DataRow) '処理 End Sub ---------------------------------------------------------------------------- サブルーチンを呼び出す前に以下のようにするとエラーはでません。 Dim Row as Data.DataRow = Rows(0) サブルーチン (Row) これはなぜなのでしょうか?RowはData.DataRow型であり、配列の要素Rows(0)もData.DataRow型でありエラーが出る意味が分からないのですが。

  • 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です。

  • ループがうまくいかない

    以下のようなテーブルがあります。 BookID,CategoryIDは一意な値です。 BooksDataをある条件で抽出するSQLを発行した際、 例えば300番のBookIDにはCategoryIDが複数あると 結果は300のレコードが複数分表示されます。 BooksIDが同じ値の場合、nextして、重複しない値になるまでnextさせ、結果としてBooksIDの値が重複しない結果を表示したいと考えております。 しかし、内側にあるDoWhile-Loop文で不明なエラーとなります。外側のDoWhile-Loop文をコメントアウトされると正常にnextできているようです。原因について推測できることはございますでしょうか。 [BooksData] BookID ISBN Title [BooksCategory] BookID CategoryID [BooksM_Category] CategoryID CategoryName Do While Not rs1.EOF 'BooksDataを表示 Response.Write("BookID:") Response.Write(rs1("BookID")&"<br>") '300番がはいっている bid = rs1("BookID") 'ここでエラーになる Do Until rs1("BookID") > bid rs1.MoveNext '最初のDoWhile-Loopをコメントアウトされると301が表示される。 'Response.Write(rs1("BookID")) Loop Loop

  • ループ処理の繰り返しについて

    お世話になっております。 単純なことで悩んでおります、どなたかわかるかたお願いいたします。 <% 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回目のループ処理がうまく抽出できません。 原因はわかりますでしょうか?

  • C#でDBの特定列をUpdate

    初歩的な質問ですいません。C#でテーブルを指定して、特定列のみ変更するにはどうすれば良いんでしょうか。 VBでしたら、下記のコードで行けますが、どなたか教えてください。 rs.Open "売上", cn Do Until rs.EOF rs.Update "売上額", rs!売上額 * 1.05 rs.MoveNext Loop

専門家に質問してみよう