DataGridの使い方

このQ&Aのポイント
  • VB.NETのDataGridを使用してデータベースに接続する方法について教えてください。
  • DataGridでテーブルを操作する際に、インデックスではなくユーザが入力したIDを使用する方法について教えてください。
  • DataGridを使用した際に「オブジェクト参照がオブジェクトインスタンスに設定されていません」というエラーが発生する場合の解決方法を教えてください。
回答を見る
  • ベストアンサー

DataGridのつかいかた

VB.NETのDataGridでアクセスのデータベースに接続しています。ところで、DataGridを使ったとき、たとえば、 DataSet11.Tables(1)...... といったように、Tables()にはインデックスとして数字を入れますが、テーブルはユーザの数だけどんどん増えていったり減ったりと流動的なため、インデックスではなく、ユーザが入力したID(たとえば"040736"など)を、直接いれるため、 DataSet11.Tables(TextBox1.text)...... というふうにしましたが、エラーで、「オブジェクト参照がオブジェクトインスタンスに設定されていません」と出てしまいました。教えてください!

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

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

確認できる環境ではないのですが・・・ DataSet11の中にTable("04736")がないためのエラーだと思います。 Dim dt As DataTable dt = DataSet11.Tables.Add(TextBox1.text) をDataTableの参照の前に入れれば回避できると思います。

YSK-Dream
質問者

お礼

どうやらselect以外は生成されていないようです。 もうちょっとみてみます。 どうもありがとうございました。

関連するQ&A

  • DataGridの中身をDataSetにテーブルとして保存する方法 (初心者)

    VB.NET2003でDataSetにテーブルを作成して、データベース(SQLServer2000)にあるテーブルを引っ張ってきて、そのDataSetのテーブルをDataGridに渡して、表示までは出来たのですが、DataGridの中身を変更した後、違うDataSetに保存する方法が分かりません。どなたか教えてください。

  • vb2003 datagridにコントロールを追加するには

    vb2003でdatagridにチェックボックス、リストボックス、 テキストボックスを追加したいです。 datasetを作成し、ヘッダ、列、行の追加まではできましたが、 そこへ各列にコントロールの追加をしたいです。 チェックボックスはdatasetでboolean型にすると 自動でチェックボックスになると聞いたのですが、なりません。 コントロールの追加の仕方を教えてください。

  • DataGridにデータセットのデータを入れたい

    VB.Netで困っております。ご教授いただけないでしょうか。 DataGridオブジェクトにデータセットのデータを表示する際,テーブル上の全データを表示するのではなく,ある条件で絞ったデータを表示するにはどうしたら良いのでしょうか? よろしくお願い致します。

  • DataGridのReadOnlyについて

    こんにちは いつもお世話になっております。 VB.NET(2003)で、DataGridにデータを表示して、編集-更新する処理を行っています。 表示ボタンを押したら表示され、更新ボタンで更新される動作です。 表示方法はDataGridTextBoxColumnのReadOnly=TrueにしたものをDataTableにADDし、 これをDataGrid.DataSourceにセットして表示させています。 そして、クリアボタン押したときに dtb = New DataTable 'グリッドに表示 DataGrid.DataSource = dtb というようにDataTableを初期化してクリアしているのですが このときDataGrid上のTextBoxにカーソルがあると そのTextがクリアされず表示されたままになってしまいます。 ReadOnlyですが、一応カーソルは当たるようにしたいのです。 表示されたままになっているのは、クリアの方法がまずいのでしょうか? すみませんが、どなたか教えていただけませんでしょうか?

  • DataGridの使用方法を教えてください

    VB.NET2002で表形式で表示(参照のみ)させたいのですが,FlexGridはないようでDATAGridを使用するように書いてありましたが, DATAGridの使用方法がよく分かりません. どのような手順をふんでコードを記述するのか教えてください. 1,フォームにDATAGrid1を貼り付け. (ボタンも貼り付け,ボタンクリックでSQL実行,表示のイメージ) 2,Btn1_Clickに以下コード記述.色々参考にしていたらよく分からない状態になってしまいました... Q.フォームのプロパティでのデザインは必須なんでしょうか? Dim myConnection As New System.Data.OleDb.OleDbConnection(sConnectionString) Dim myCommand As New OleDb.OleDbCommand _ ("select * from データ", myConnection) Dim myReader As OleDb.OleDbDataReader Dim dst As New DataSet("Table") 'DataTable("DataTable") dst.Tables.Add(New DataTable("dst")) Dim dc As DataColumn myConnection.Open() myReader = myCommand.ExecuteReader 'データの読み込み While (myReader.Read) DataGrid1.DataSource = myReader.GetValue(0) End While DataGrid1.SetDataBinding(dst, "dst") myConnection.Close() myConnection = Nothing myReader.Close() myReader = Nothing myCommand = Nothing myConnection.Close() 'データベース閉じる myConnection = Nothing

  • datagrid内にdatagridもしくはdatalistをネストしたい

    こんばんは。 現在Visual Studio .NET 2003 でASP.NET + VB.NETの ウェブフォームを作っています。 たとえばデータベースにtable1とtable2があり idをjoinさせてdatagridにバインドすると id......name.........order ------------------------------- 1.......abc...........a ------------------------------- 1.......abc...........b ------------------------------- 2.......def...........a ------------------------------- 3.......hij...........a ------------------------------- 3.......hij...........b ------------------------------- 3.......hij...........c ------------------------------- 4.......klm...........b ------------------------------- となるのですが id......name........order ------------------------------- 1.......abc...........a ..........................b ------------------------------- 2.......def...........a ------------------------------- 3.......hij...........a ..........................b ..........................c ------------------------------- 4.......klm...........b ------------------------------- このように表示させたいためdatagridを ネストさせるしかないかと思うのですが、 うまくいきません。 http://www.atmarkit.co.jp/fdotnet/dotnettips/132nesteddg/nesteddg.html このサイトを参考にしてC#のソースコードをVBに 変えてみましたがそれもうまくいきません。 どの方法が一番いいのか、datagridにdatalistを ネストさせることが出来るのかもわからず 困っています。 datagridをどうすればネストして表示できるのか、 よりいい方法があるのか、アドバイスをお願いいたします。

  • DataGridに表示されない

    VB6でMySQL4.1に接続して MySQL内にあるデータベース"sample"の テーブル"総合"をDataGridに表示したいのですが できません。 エラーメッセージは "実行時エラー '7004': 行セットにはブックマークを設定できません" とでます。 どうしたら表示されるのでしょうか? Private Sub form_load() Dim cn As ADODB.Connection 'オブジェクト Dim rs As ADODB.Recordset 'データベースに接続 Set cn = New ADODB.Connection 'データベース:Sheet1 cn.ConnectionString = "Provider=MSDASQL.1;" _ & "Data Source=sample" cn.Open 'レコードセットの取得 Set rs = New ADODB.Recordset rs.ActiveConnection = cn rs.Source = "総合" rs.CursorType = adOpenStatic rs.LockType = adLockOptimistic rs.Open Set DataGrid1.DataSource = rs End Sub

  • Reportviewer で改ページができません。

    はじめまして。 VB.NET 2005 OSはXPでReportviewerを使って レポートを出力しようとしています。 しかし、rdlcのプロパティで一覧オブジェクトを使い 末尾に改ページを行うなどを設定しても うまく改ページされません。 datasetのテーブルに取り込むコードは以下になります。 Me.DataSet1.Tables(0).Rows.Add(*,*,*,*) ReportViewer1.RefreshReport() どなたか方法を教えていただけませんでしょうか。 宜しくお願い致します。

  • DataSetから、DataTableを取得したい。

    C♯環境です。 DataSetに格納されている1つのテーブルを、DataTableとして 取得したいと思っています。 VB.NETではたしか出来たと思うのですが… DataTable Dt= DataSet.Tables(0); 以上のように書くと、「~Tablesはプロパティですがメソッドのように 使用されています」と怒られます。 出来ないのでしょうか…? 誤りをご指摘いただけるとありがたいです。 宜しくお願いします。

  • DataGrid(DataSet?)で列幅調整

    VB.NET 2002使用 フォーム上にDataGridコントロールを貼付け Form_Load()内に以下のように記述し、SQLを使用してデータを表示させるようにしていますが、 列幅がデフォルト?になっているようで変更ができません。 どのようなコードを記述すれば変更ができるのでしょうか。 MSDNやWEBサンプル(dobon.net)を参考にしてダメでした。 DataGridプロパティのDataGridTableStyleのコレクション内を色々さわってみてもダメ。 DataGridの設定・使用方をよく分かっていないのが問題なんだと思うのですが、「こういう記述をすればいい」というのがお分かりの方がいらっしゃいましたら教えてください。 <記述したコード(一部)> Public dst As New DataSet() Private Sub Form1_Load(省略) Handles MyBase.Load sql = "select 列1,列2 from テーブル" Dim myConnection ... Dim myCommand As New OleDb.OleDbDataAdapter(ssql, myConnection) dst.Clear() myCommand.Fill(dst) 'データセットにデータ取込み DataGrid1.DataSource = dst.Tables(0) 'DataGridにデータ取込み myCommand = Nothing myConnection.Close() 'データベース閉じる myConnection = Nothing Dim ts As New DataGridTableStyle() ts.MappingName = "DataTable1" 'サンプルからそのまま流用 Dim cs1 DataGridTextBoxColumn cs1 = New DataGridTextBoxColumn() cs1.MappingName="Column1" cs1.width = 200 ts.GridColumnStyles.Add(cs1) Dim cs2 DataGridTextBoxColumn cs2.MappingName="Column1" cs2 = New DataGridTextBoxColumn() cs2.width = 300 ts.GridColumnStyles.Add(cs2) DataGrid1.TableStyles.Add(ts) End sub

専門家に質問してみよう