重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

フォーム上に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 で発生しました。

A 回答 (1件)

DataAdapter なんか設定できないよ。

当然でしょう。
カップにコーヒーを淹れて、「カップを食べろ」と言っているようなもの。
設定するなら DataTable か DataSet でしょう。

この回答への補足

>>MARU4812さん
回答ありがとうございました。
一応自己解決しました。
そもそも使い方がおかしかったわけですよね・・・
次回からはもうちょっとよく考えるようにします。


一応、回答

(誤)col(0).MappingName = "商品コード"
(正)col(0).MappingName = "ryohincd"
DBの列名を指定する

(誤)dbtabl = New DataTable
(正)dbtabl = New DataTable("表示用")
マッピング名を指定してオブジェクト生成

(誤)Me.DataGrid_Display.DataSource = dbadp
(正)Me.DataGrid_Display.DataSource = dbtabl
データアダプタではなくて、データテーブルを指定

補足日時:2011/02/09 13:51
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2011/02/09 13:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!