データベースをEOFまでループさせたい
- 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という概念もない様子?! どなたかヨロシクお願いします!
- bonn1117
- お礼率80% (21/26)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VB.Netは詳しくないですが、パッと見てわかるのは「aaa=・・・」の行の誤りです。 For Each row As DataRow In rs.Tables(dataTableName).Rows aaa = row("Log_Time") Next
関連する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 ------------------------------------ よろしくお願いします。
- ベストアンサー
- 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
- 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」で発生するエラーの回避方法を御教示願います。
- 締切済み
- Microsoft ASP
- この行は既に別のテーブルに属しています
以下のソースで、「この行は既に別のテーブルに属しています。」というエラーが出てしまいますが、対処方法がわかりません。 どのようにしたらよろしいでしょうか? 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 で発生しました。 追加情報 : この行は既に別のテーブルに属しています。
- ベストアンサー
- Visual Basic
- 配列と互換性のない型の要素にアクセスしようとしまし
以下のソースでサブルーチン呼び出し行で例外「配列と互換性のない型の要素にアクセスしようとしました」が出ます。 -------------------------------------------------------------------------- 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型でありエラーが出る意味が分からないのですが。
- 締切済み
- Visual Basic
- 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
- ベストアンサー
- 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
- C#でDBの特定列をUpdate
初歩的な質問ですいません。C#でテーブルを指定して、特定列のみ変更するにはどうすれば良いんでしょうか。 VBでしたら、下記のコードで行けますが、どなたか教えてください。 rs.Open "売上", cn Do Until rs.EOF rs.Update "売上額", rs!売上額 * 1.05 rs.MoveNext Loop
- ベストアンサー
- C・C++・C#
お礼
ありがとうございます! 「rs.Tables(dataTableName).Rows」 までを持つことができるので 「aaa = row("Log_Time")」という記述になるのですね!!! おかげさまで解決いたしました!