• ベストアンサー

DataGridでエラーになる

こんにちわ。 現在「Microsoft Visual Basic 2008 Express Edition」と「Microsoft SQL Server 2005」で開発を始めた初心者です。 テーブルの指定範囲のレコードをDataGridに表示したいため、ホームページのサンプルを参考にコーディングしたのですが、 エラーとなってしまいます。 フォームには、ツールボックスから「DataGridView」をドラックして貼り付けてあります。 どうすれば動きますでしょうか?ご教授お願いします。 <エラーの内容> 「'TableStyles'は'System.Windows.Forms.DataGridView'のメンバではありません。」 <参考ホームページ> http://park5.wakwak.com/~weblab/selectRange.html ---------------------------------------------------------------- Imports TESTPG.DbUtil Imports System.Data.OleDb Public Class frm社員マスタ一覧 Inherits System.Windows.Forms.Form Private Sub BTN_検索ボタン_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_検索ボタン.Click '------------------------------------------- ' レコードを取得し、データグリッドに表示する '------------------------------------------- Try 'テーブルスタイルを生成する Dim ts As New DataGridTableStyle() 'マップ名を指定する ts.MappingName = "社員テーブル" '新しい列スタイルの作成 Dim cs(2) As DataGridTextBoxColumn cs(2) = New DataGridTextBoxColumn() 'マップ名を指定する cs(2).MappingName = "Column1" '列ヘッダに表示される文字列 '1列目:社員コード cs(0) = New DataGridTextBoxColumn() cs(0).HeaderText = "コード" cs(0).MappingName = "社員コード" cs(0).Width = 40 cs(0).Alignment = HorizontalAlignment.Center '2列目:社員氏名 cs(1) = New DataGridTextBoxColumn() cs(1).HeaderText = "社員氏名" cs(1).MappingName = "社員氏名" cs(1).Width = 90 cs(1).Alignment = HorizontalAlignment.Left '3列目:社員カナ名 cs(2) = New DataGridTextBoxColumn() cs(2).HeaderText = "社員カナ名" cs(2).MappingName = "社員カナ" cs(2).Width = 130 cs(2).Alignment = HorizontalAlignment.Left '列スタイルをテーブルスタイルに追加する ts.GridColumnStyles.AddRange(cs) 'テーブルスタイルをグリッドに追加する dgrSyain.TableStyles.Clear() ← ここでエラー dgrSyain.TableStyles.Add(ts) ← ここでエラー '************************************* 'SQL文の設定 'データを取得する 'データをバインドする '************************************* Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.ToString, "例外発生") End Try End Sub End Class

noname#208236
noname#208236

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

  • ベストアンサー
  • marukun77
  • ベストアンサー率100% (3/3)
回答No.1

参照されているページは、Visual Studio 2003 以前のものですね。 DataGrid と DataGridView は扱い方が異なりますので、そのままでは 動きません。どちらも覚えるのにはある程度時間がかかると思います。 直接回答ではないのですが、たとえば以下を参照にしてみてはいかが でしょうか。 http://japan.internet.com/developer/20070522/26.html がんばってください。

noname#208236
質問者

お礼

お返事おそくなりました。 DataGrid と DataGridView では扱い方が違うことを理解していませんでした。今から勉強するのならDataGridViewを調べればいいのですね。 ありがとうございました。

その他の回答 (1)

noname#259269
noname#259269
回答No.2

DataGrid は、過去のコントロールですが、以下の手順で利用できますので、参照されているサイトの動作はできるようになると思います。 ・ツールボックスを右クリックして「項目の追加」を選ぶ。 ・「ツールボックス アイテムの選択」ダイアログの「.NET Framework コンポーネント」で DataGrid(System.Window.Forms)を選ぶ。 ・現在貼り付けている DataGridView を削除し、代わりに DataGrid を貼り付ける。 但し、#1さんが回答されているように DataGrid は過去のコントロールですので、新たに学習するのであれば、新しい DataGridView の使い方を覚えた方がよいような気はします。

noname#208236
質問者

お礼

お返事おそくなりました。 さっそく、DataGridViewを勉強していこうと思います。 ありがとうございました。

関連するQ&A

  • VB2008・DataGridの表示について

    フォーム上にDataGridを設置してsqlcompactで作られたテーブルのデータを表示しようとして 以下のソースを実行すると、エラーになり表示できませんでした。 もし、原因がわかるかたがいらっしゃいましたら教えてくださると助かります。 表示するにあたり、テーブルの特定のカラムだけ表示して、ヘッダーを編集したい。 テーブルの全レコードではなくて対象レコードのみを表示 Dim cn As New System.Data.SqlServerCe.SqlCeConnection Dim SQL As System.Data.SqlServerCe.SqlCeCommand Dim db_sql As String ' テーブルスタイルを生成する Dim dgStyle As DataGridTableStyle = New DataGridTableStyle() dgStyle.MappingName = "表示用テーブル" ' 列スタイルを生成し、プロパティを設定する Dim col(4) As DataGridTextBoxColumn col(0) = New DataGridTextBoxColumn() col(0).HeaderText = "商品コード" col(0).MappingName = "商品コード" col(0).Width = 50 col(1) = New DataGridTextBoxColumn() col(1).HeaderText = "商品名" col(1).MappingName = "商品名" col(1).Width = 100 ' 列スタイルをテーブルスタイルに追加する dgStyle.GridColumnStyles.Add(col(0)) dgStyle.GridColumnStyles.Add(col(1)) ' テーブルスタイルをグリッドに追加する Me.DataGrid_Display.TableStyles.Clear() Me.DataGrid_Display.TableStyles.Add(dgStyle) 'DBのパスをセットしてオブジェクト化 cn.ConnectionString = "Data Source=" & DB_PATH & ";Password=" & DB_PASSWORD & ";Persist Security Info=True;" SQL = cn.CreateCommand 'データグリッドを表示する Dim dbadp As System.Data.SqlServerCe.SqlCeDataAdapter Dim dbtabl As DataTable Dim aa As DataSet db_sql = "SELECT syohinno, syohinryaku, suryo1, suryo2, suryo3 FROM porsj05_tempo ORDER BY date DESC" dbadp = New SqlCeDataAdapter(db_sql, cn) dbtabl = New DataTable dbtabl.Locale = System.Globalization.CultureInfo.InvariantCulture dbadp.Fill(dbtabl) Me.DataGrid_Display.DataSource = dbadp Me.DataGrid_Display.Refresh() エラー箇所 Me.DataGrid_Display.DataSource = dbadp エラー内容 Complex DataBinding は IList または IListSource のどちらかをデータソースとして受け入れます。 'System.ArgumentException' の初回例外が System.Windows.Forms.dll で発生しました。

  • 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

  • DataGridのFont

    VB.Net2003 の初心者です。 DataGridの指定セルのFontを変更することはできないのでしょうか? Dim tblStyle As DataGridTableStyle Dim clmStyle As DataGridTextBoxColumn clmStyle = New TestDataGrid tblStyle.GridColumnStyles.Add(clmStyle) With clmStyle   .MappingName = "Test"   .Width = 45   .NullText = Nothing   .Alignment = HorizontalAlignment.Right   .Format = "0.0" .TextBox.Font.Bold = True  End With と書いた場合「プロパティ 'Bold' は 'ReadOnly' です。」というエラーになってしまいます。なにか良い方法をご存知の方がいらっしゃいましたら教えていただけないでしょうか。

  • VB2005 DataGridViewにチェックボックスを追加する方法

    タイトル通りなのですが VB2005でDataGridViewにチェックボックスを追加したいです。 ############################################################### Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim chColumn As New DataGridViewCheckboxColmun DataGridView1.ColumnCount = 5 DataGridView1.Columns(0).HeaderText = "1" DataGridView1.Columns(1).HeaderText = "2" DataGridView1.Columns(2).HeaderText = "3" DataGridView1.Columns.Insert(4, chColumn) End Sub End Class ############################################################## Dim chColumn As New DataGridViewCheckboxColmun ↑で'型'DataGridViewCheckboxColmunが定義されていません となってしまいます。 どうすればよいでしょうか。。。。 プログラム初めて1週間の初心者なのでお手柔らかに よろしくお願いします。

  • ルックアップフィールドについて

    Accessをデータベースにして練習中です。 テーブルが複数あり、デザイナで基本フォームを作ってあります。 参考書にルックアップフィールドの作成の仕方が載っていたのですが わからなくなってしまったのでどなたか教えてください。 下のコードを実行すると、ルックアップフィールドが空白になってしまいます。 データセット名:業務DataSet 登録社員テーブル:社員ID、氏名、住所、電話の4列 成績テーブル:社員ID、成果、残業時間の3列 成績テーブルに対応したフォームをデザイナで作成。 社員IDは「社員IDComboBox」、ルックアップフィールドはツールボックスから作り、「氏名TextBox」にしました。  ルックアップフィールドのTextBoxに社員IDに対応した氏名を表示したいと思っています。   Private Sub 社員IDComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 社員IDComboBox.SelectedIndexChanged If 社員IDComboBox.Text = "" Then Exit Sub      End If Dim dr As 業務DataSet._登録社員Row dr = 業務DataSet._登録社員.FindBy社員ID(CType(社員IDComboBox.SelectedText, Integer)) If dr Is Nothing Then 氏名TextBox.Text = "" Else 氏名TextBox.Text = dr.氏名 End If End Sub 色々やっていたら何がおかしいのかわからなくなってしまいました。 すみませんが教えてください。 それと、ComboBoxに登録社員テーブルの社員IDの一覧を表示しようと思ったらどのようにすればよいのですか?

  • SQLServerデータをDataGridに表示時にエラーが発生

    SQLServerデータをDataGridに表示時にエラーが発生 visual Studio2008を使用し、SQLServerから条件を指定しそれをDataGridに一覧表示するvbを組んでいますが、エラーが解消しなく困っております。対応方法について教えてください。 【状況】 1 Dim St As String 2 Dim Cn As New System.Data.SqlClient.SqlConnection 3 Dim SQL As System.Data.SqlClient.SqlCommand 4 Dim ServerName As String = "Server名"  5 Dim UserID As String = "id" 6 Dim Password As String = "×××" 7 Dim DatabaseName As String = "Dbname" 8 Dim Adapter As New SqlClient.SqlDataAdapter(SQL, Cn) 9 Dim table As New DataTable 10 St = "Server=" & ServerName & ";" 11 St &= "User ID=" & UserID & ";" 12 St &= "Password=" & Password & ";" 13 St &= "Initial Catalog=" & DatabaseName 14 Cn.Open() 15 Cn.ConnectionString = St 16 SQL = Cn.CreateCommand 17 SQL.CommandText = ("SELECT * FROM CUSTOMER_M WHERE CUSTOMER_NAME LIKE " & "'%' & TextBoxName.Text & '%'") 18 Adapter.Fill(table) 19 DataGrid1.DataSource = table 20 Cn.Close() 21 SQL.Dispose() 22 Cn.Dispose() 8行目の「Adapter」がエラーになり、オーバーロードの解決に失敗しましたとメッセージが出ています。8行目の(SQl、Cn)を省くとコンパイルエラーはなくなりますが、14行目でエラーになります。 宜しくお願いします。

  • VB2005EE:DataGridViewでチェックボックスを設けるには

    はじめまして DataGridView(VB2005EE)でチェックボックスを設ける方法を教えていただきたく質問させていただきました。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '3つの列を設定し,ABCという列名をつける DataGridView1.ColumnCount = 5 DataGridView1.Columns(0).HeaderText = "A" DataGridView1.Columns(1).HeaderText = "B" DataGridView1.Columns(2).HeaderText = "C" Dim myNewCell As New DataGridViewCheckBoxCell DataGridView1.Columns.Insert(3, New DataGridViewColumn(myNewCell)) DataGridView1.Columns.Item(3).HeaderText = "チェックボックス" DataGridView1.Columns.Item(3).Name = "識別名" DataGridView1.RowCount = 4 '最下行に管理用の行設置 End Sub End Class 手元の本を参考に上記のコードでコンパイルを行うと, >DataGridViewで釣りの例外が発生しました: >System.FormatException:セルのフォーマットされた値に間違った型が>指定されています。 >この既定のダイアログを置き換えるには,DataErrorイベントをハンド>ルしてください。 というエラーダイアログが発生します。 まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

  • エラーを発生させたい(SQLサーバーへの接続)

    ネットのサンプルコードでSQLサーバーの接続テストをしましたが、 存在しないSQL文でもエラーになりません。(vb2005です) Sub sqlサーバーへ接続() ' 接続文字列を生成する Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim stConnectionString As String = String.Empty stConnectionString &= "Data Source = ××××\SQLEXPRESS;" stConnectionString &= "Initial Catalog = ×××;" stConnectionString &= "Integrated Security = SSPI;" ' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString) ' データベース接続を開く cSqlConnection.Open() SQL = Cn.CreateCommand SQL.CommandText = "SELECT テーブル1.あああフィールド1 FROM テーブル1" '間違ってても進んでしまう。 ' 接続に成功した旨を表示する MessageBox.Show("Microsoft SQL Server に接続されました") ' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照) cSqlConnection.Close() cSqlConnection.Dispose() End Sub 「あああフィールド1」なんて存在しないのに、先に進んでしまいます。 エラー処理の仕方を教えてください。 よろしくお願いします。

  • cssで列の幅を調整するには?

    たとえば、 <style type="text/css"> table { width: 100%; } </style> </head> <body> <table border=1 cellspacing=1 cellpadding=1> <tr><td>a</td><td>b</td><td>c</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> </table> このようなcssとコードがある場合、 3列目のcと3の列の幅を10%にしたい場合、 どのようなコードを書けばいいですか? td { width: 10%; } こうすると、すべての列が10%になってしまいます。 指定した列のみのcssで幅を調整する方法を教えてください。 できれば直接テーブルのタグをいじるのではなく、スタイルシートの宣言部分で対応したいです。

    • ベストアンサー
    • HTML
  • vb.net web 動的に作成したTableが消える

    よろしくお願いします 現在、vs.net 2005 で web ページを作成しています そこで質問があるので、ご教授の程よろしくお願いします。 test.aspx Table コントロール配置:Table1 Button コントロール配置:Button1 Label コントロール配置:Label1 Label コントロール配置:Label2 test.aspx.vb Partial Class test Inherits System.Web.UI.Page Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load Dim row As TableRow Dim col As TableCell If (Page.IsPostBack = False) Then Label2.Text = "aaa" row = New TableRow col = New TableCell : col.Text = "行0:列0" : row.Cells.Add(col) : col = Nothing col = New TableCell : col.Text = "行0:列1" : row.Cells.Add(col) : col = Nothing Table1.Rows.Add(row) row = New TableRow col = New TableCell : col.Text = "行0:列0" : row.Cells.Add(col) : col = Nothing col = New TableCell : col.Text = "行0:列1" : row.Cells.Add(col) : col = Nothing Table1.Rows.Add(row) End If End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "Rows.Count" & Table1.Rows.Count End Sub End Class ボタンを押すと、 Label2の "aaa" は保持されていて Table1が保持されないのはなぜなのでしょうか? Table1 の内容を保持させたいのですが その場合、どのようにすればよいのでしょうか

専門家に質問してみよう