• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:なぜか、全レコードを取得してくれません・・・)

全レコードを取得できない問題の原因は?

このQ&Aのポイント
  • VB.NETでコーディング、デバッグ実行中です。区分マスタテーブルには、現在5レコードのデータがありますが、先頭から2レコードしかデータを取得してくれません。
  • oDataReader.Read()が2回目でFalseとなってWhileが終了してしまいます。
  • なぜ2回目以降にデータを取得できないのか、原因を教えてください。

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

  • ベストアンサー
  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.1

詳細エラーコードはなんですか? それを見れば直ぐ分かると思いますが。 とりあえず、 SELECT * FROM 区分マスタ ORDER BY 区分コード の部分を SELECT count(*) FROM 区分マスタ にしてみて、実際に5件取れているのか確認してみてはどうでしょうか。 ACCESSで確認はしているとは思いますが、駄目押しで確認してみてください。 5件となるようであれば、データを疑ってみましょう。

THUBAN
質問者

お礼

大変、すいません・・ バックアップ用のmdbを見に行っていました。 m(_"_)m バックアップ用mdbには、2レコード分のデータしか存在していなかったので。 ソースコードには問題ありませんでした。 正常データ取得も確認できました。 お騒がせいたしました。 でも、お教えいただいたチェック方法は、今後の参考になります。 ありがとうございました。

THUBAN
質問者

補足

詳細エラーコードですが、エラーは出ません。 コード自体は正常に流れていますが、  While oDataReader.Read()   'レコードが取得できた時の処理   i = i + 1   ReDim Preserve kubunInfo(i)   kubunInfo(i).kubunCode = CStr(oDataReader("区分コード"))   kubunInfo(i).syoriNaiyou = CStr(oDataReader("処理内容"))  End While の部分で、2レコード分しか回っていないのです。 アクセスデータもチェックしてみましたが、特に問題はなさそうでした。 “oDataReader.Read()”は、最終レコードに行き着くまでは、 Trueを返すはずだと理解していますが、2レコード分でFalseを 返してしまっています。 やはり、アクセスのテーブルに、どこか問題があるのでしょうか? ちなみに、Const strSelectSyain As String = "SELECT count(*) FROM 区分マスタ" として、実行してみましたが、今度は「レコード取得エラー」ウインドが出てしまいました。 (以下、ソースコードの続き) ------------------------------------ Public Function getKubunAll(ByRef kubunInfo() As structKubun) As String        ・        ・        ・        ・ '取得レコード数のチェック   If kubunInfo Is Nothing Then    'レコードがなかった時の処理    Return "区分マスタテーブルにレコードがありません"   Else    Return ""   End If   Catch oExcept As Exception    '例外が発生した時の処理   Return oExcept.ToString   Finally      'データリーダクローズ   If Not oDataReader Is Nothing Then    oDataReader.Close()   End If      'DBクローズ   If Not oConn Is Nothing Then    oConn.Close()   End If  End Try End Function

関連するQ&A

専門家に質問してみよう