- ベストアンサー
全レコードを取得できない問題の原因は?
iiikkkの回答
詳細エラーコードはなんですか? それを見れば直ぐ分かると思いますが。 とりあえず、 SELECT * FROM 区分マスタ ORDER BY 区分コード の部分を SELECT count(*) FROM 区分マスタ にしてみて、実際に5件取れているのか確認してみてはどうでしょうか。 ACCESSで確認はしているとは思いますが、駄目押しで確認してみてください。 5件となるようであれば、データを疑ってみましょう。
関連するQ&A
- VB.NETで、ORACLE 8に接続するには?
現在、ローカルのmdbに接続しています。 接続先DBを同LAN上のWin2000ServerのORACE 8に変えるべくコードを修正していますが上手くいきません。 当方、ORACLEは初めてなので、接続方法がイマイチ良くわからず・・・ ちなみに、接続方法はoo4oを用いたいです。 ご教授いただけると幸いです。 ----- mdb接続で用いているコード ------ Public Function getData(ByRef table_name As String, ByRef code_name As String, ByRef extract As String, ByRef code As String) As String Dim oConn As New OleDbConnection Dim oCommand As New OleDbCommand Dim oDataReader As OleDbDataReader Try oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\XXXXX.mdb" oCommand.Connection = oConn oCommand.CommandText = "SELECT * FROM " + table_name + " ORDER BY " + code_name oConn.Open() oDataReader = oCommand.ExecuteReader() While oDataReader.Read() If code = CStr(oDataReader(code_name)) Then getData = CStr(oDataReader(extract)) Exit While End If End While ・ ・(省略) ・ Finally If Not oDataReader Is Nothing Then oDataReader.Close() End If If Not oConn Is Nothing Then oConn.Close() End If End Try End Function
- ベストアンサー
- Visual Basic
- SQL文のSELECTで読み、配列に取り込み
SQL文のSELECTで読み、配列に取り込みたく、下記のプログラム作成しましたがエラー『ExecuteReader: Connection プロパティは初期化されていません。』が出て困っています。 どこで、どのように設定すればよいのでしょうか? Private Function Sosiki_kouzou() As String()() Dim Sosiki_tbl2(3)() As String Dim Dread As Data.OleDb.OleDbDataReader Dim Com As New Data.OleDb.OleDbCommand Com = New Data.OleDb.OleDbCommand("SELECT ORG_ID,SHORT_OU_JA, PARENT_ORG_ID FROM meldandy.WF_ORGANIZATION") Dread = Com.ExecuteReader Dim Cnt1 As Integer Cnt1 = 0 Do While (Dread.Read()) Cnt1 = Cnt1 + 1 Sosiki_tbl2(1)(Cnt1) = Dread.GetString(1) Sosiki_tbl2(2)(Cnt1) = Dread.GetString(2) Sosiki_tbl2(3)(Cnt1) = Dread.GetString(3) Loop Return Sosiki_tbl2 End Function VisualStadioを始めたばかりの素人です。 的外れかも知れませんがよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 再質問: リスト配列の添字の最大値の取得要領?
余り、やっている全容を示すのもと思って関係個所だけを提示して質問してきました。 しかし、回答者の方にとっては煩わしい質問の仕方。 ですから、今回は、全てを晒した上で質問します。 ”列添字最大値”という記号定数を用いています。 現実のアプリケーションでは、これは良い方法だと思います。 しかし、それはそれ、これはこれです。 VB.NET の初学者の私は、<記号定数を用いない書き方>が知りたいところです。 この最終的な疑問が解消すれば、テキストの配列への呼び込み実験は終了。 宜しくお願いします。 ' ========================== ' CSVReadToArray のテスト2 ' ========================== Const 列添字最大値 As Integer = 3 Sub Main() Dim I As Integer ' 行を参照するための For 文の変数 Dim J As Integer ' 列を参照するための For 文の変数 'Dim K As Integer ' 列(フィールドあるいは要素)の数 Dim aDatas As New List(Of String())() Dim N = CSVReadToArray("D:\Temp\付属一覧.csv", aDatas) - 1 For I = 0 To N For J = 0 To 列添字最大値 Debug.Print(aDatas(I)(J)) Next J Next I End Sub ' ============================================================= ' CSV ファイルを配列に読み込む; TextFieldParser クラス版; 第2版 ' ============================================================= Function CSVReadToArray(ByVal aFile As String, _ ByRef aRows As List(Of String())) As Integer If File.Exists(aFile) Then Try Using MyReader As New TextFieldParser(aFile, Encoding.Default) MyReader.TextFieldType = FieldType.Delimited MyReader.Delimiters = New String() {","} While Not MyReader.EndOfData aRows.Add(MyReader.ReadFields()) End While Return aRows.Count End Using Catch ex As FileIO.MalformedLineException MsgBox(ex.Message & "(CSVReadToArray)", , "告知:") Return 0 End Try Else Return 0 End If End Function
- ベストアンサー
- Visual Basic
- DatagridviewComboboxCellについて聞きたいですが
DatagridviewComboboxCellについて聞きたいですが、 各セルのコンボボックスに違い値を入れたいけど、以下のエラーが出ました。 "指定されたセルはグリッドにすでに属しています"。 ソース例: Dim Reader As FileReader = New FileReader("C://text.txt") Dim cbb as New DatagridviewComboboxCell() Dim cbb1 as New DatagridviewComboboxCell() Dim strA as String = "" Dim t as integer = 0 Me.Controls.Add(Dtgrdview) Dtgrdview.ColumnCount = 5 . (省略) For i as Integer = 0 to 10 Select case strA Case "A" cbb.Items.Add(Cstr(i)) Case "B" cbb1.Items.Add(Cstr(i+1)) End Select Next With Dtgrdview.Rows While not Reader.EndofData Dim _readFile As readFile = New readFile(Reader.ReadFields()) '(readFile.vbは別) Dim row As String() = _ {_readFile.Class,_readFile.Name,_readFile.Year,_readFile.Add} ' Dtgrdview.Rows.Add(row) Select Case _readFile.ID Case "A" Dtgrdview.Rows(t).Cells(4) = cbb ==> t= 1 エラーが出る Case Else Dtgrdview.Rows(t).Cells(4) = cbb1 End Select t += 1 End While ReadFile.Close() End With 解決方法を教えてください。ありがとうございます。
- 締切済み
- Visual Basic
- OleDbで、1レコード分のデータを読み出したい。
これまで、VB6とADOを使って、MS-Accessのmdbファイルに接続していました。 ようやく、.netに移行しようと思い、VB2010のExpress版で勉強を始めました。 以下の方法で、test.mdb内のtable1テーブルのfields1の値を、ListViewコントロールに表示させることはできました。 Imports System.Data.OleDb Public Class Form1 Private oleConn As New OleDbConnection Private oleCmd As New OleDbCommand Private oleReader As OleDbDataReader Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strConnect As String strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =test.mdb" oleConn.ConnectionString = strConnect oleConn.Open() oleCmd = oleConn.CreateCommand oleCmd.CommandText = "SELECT * FROM table1" oleReader = oleCmd.ExecuteReader() While(oleReader.Read()) ListView1.Items.Add(oleReader.Item("fields1")) End While End Sub End Class 質問は2点です。 1.ADOのRecordSetのMove系メッソッド(.movenext、.moveprevious等)で、レコードを移動するように、OleDbでレコードを移動する方法。 2.ADOのRecordSetのFieldsコントロールのように、カレントレコードのデータを、OleDbで読み出す方法。 Googleで検索しても、ループで全データを読み出す方法はいろいろ見つかるのですが、カレントレコードのデータだけを読み出す方法が分かりません。 oleReader = oleCmd.ExecuteReader() の直後に Me.Text = oleReader.Item("fields1") を記述しても、エラーとなってしまいます。 VBは趣味でやっており、基本的質問ですが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- 【vb.net】クラス化について
大学で以下のような練習問題を頂きました。 ----- Public Sub test() Dim a As b = New c Dim i As Integer = 1 a.disp(i) End Sub 問:この時のbとcを実装せよ。 ----- Public Class c Public Function disp(ByVal i As Integer) As String return "iは" & i & "です" End Function End Class までは書いてみたのですが、b の扱いがどうもわかりません。 どなたか教えていただけませんでしょうか。
- ベストアンサー
- Visual Basic
- 【vba】「CStr」と「Str」は同じ意味ですか?
Sub 数値を文字型に変更() Dim i As Long Dim moji As String i = 1 moji = CStr(i) moji = Str(i) End Sub 上記のコードで得られる結果は同じです。 "1"になります。 「CStr」でも「Str」でも数値を文字列に変換しています。 ということは「CStr」でも「Str」は同じなのですか? しかしコードの表示色が 「CStr」→キーワード 「Str」→識別子 です。 これが違うと言うことは何かが違うのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- DataTableの件数を取得したい
DataTableの件数を取得したいのですがどのようにすれば取得できますか? Private Function getDataListCnt() As Long Dim DBConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("xxx").ConnectionString) Dim sqlCmd As New SqlCommand sqlCmd.Connection = DBConnection Dim lngRet AS Long Dim dt As DataTable = New DataTable() dt = GetList() ☆ここで取得したい☆ lngRet=??? Return lngRet End Function Private Function GetList() Dim CmdTxt As StringBuilder = New StringBuilder() CmdTxt.AppendLine(" SELECT * FROM TBL WHERE CD='001'") Dim dt = GetDBListData(CmdTxt.ToString()) Return dt End Function
- ベストアンサー
- Microsoft ASP
- ADOでレコードを閉じるタイミング。。Access2000/VB6/Win2K
レコードセットを返すFuncitonプロシージャーを作ってみたのですが。。。 下のGet_Recordsの方のレコードセットをCloseすると上の方のDisp_Dataでオブ ジェクトが閉じているといって怒られます。しかし、閉じないと下の方では開きっ ぱなしになると思うのですが。。。どのように処理すればいいのでしょうか? Public P_CN As ADODB.Connection Private Sub Disp_Date() Dim RS As ADODB.Recordset Dim SQL AS String Set RS = Get_Records(SQL) With RS If .RecordCount > 0 Then .MoveLast: .MoveFirst .Debug.Print !顧客_ID End If End With RS.Close Set RS = Nothing End Sub Public Function Get_Records(pSQL As String) As ADODB.Recordset Dim RS As ADODB.Recordset Set RS = New ADODB.Recordset RS.Open pSQL, P_CN, adOpenKeyset, adLockOptimistic Set Get_Records = RS ''' RS.Close ''' Set RS = Nothing End Function
- ベストアンサー
- その他(データベース)
- [VB.NET] テキスト出力で困ってます(T△T
すいません、教えて下さい。 Byte型で読み込んだ内容を指定した固定長で出力したいです。 例えば、次のテキストファイルがあります。 【読み込み元.txt】 ------------------------------------------------------- ABC123 ------------------------------------------------------- 文字コードをSJISとしてバイナリ値では「41 42 43 31 32 33」となります。 この値を次のように出力したいです。 【出力先.txt】(3バイト区切りとする) ------------------------------------------------------- 414243 313233 ------------------------------------------------------- なんとか自力で近しい?とこまで行けたのかなと思いますが 肝心の出力がうまくいきません。 【VB.Net】 ------------------------------------------------------- Dim BUFSIZE As Integer = 2048 ' 1度に処理するサイズ Dim buf(BUFSIZE) As Byte ' 読み込み用バッファ Dim readSize As Integer ' Readメソッドで読み込んだバイト数 Dim srcName As String = "C:\Temp\A.txt" ' 読み込み元 Dim detName As String = "C:\Temp\B.txt" ' 出力先 ' 処理開始 Using src As New FileStream(srcName, FileMode.Open, FileAccess.Read) Using dest As New FileStream(destName, FileMode.Create, FileAccess.Write) While True ' 読み込み readSize = src.Read(buf, 0, BUFSIZE) ' 読み込むものが無ければ終了 If readSize = 0 Then Exit While ' 直接16進数を指定固定長で書き込みしたい部分 For i As Integer = 0 To readSize - 1 msgbox buf(i) Next ' 書き込み実行 dest.Write(buf, 0, readSize) End While End Using End Using ------------------------------------------------------- 大変お手数ですがご教示頂ければと思います。
- ベストアンサー
- Visual Basic
お礼
大変、すいません・・ バックアップ用のmdbを見に行っていました。 m(_"_)m バックアップ用mdbには、2レコード分のデータしか存在していなかったので。 ソースコードには問題ありませんでした。 正常データ取得も確認できました。 お騒がせいたしました。 でも、お教えいただいたチェック方法は、今後の参考になります。 ありがとうございました。
補足
詳細エラーコードですが、エラーは出ません。 コード自体は正常に流れていますが、 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