- - PR -
DataGridViewの内容をデータベースへ反映
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-10-03 22:15
サンプルの前に、言語体系を身につけてください。
英語の文法や単語がわからないのに、字幕なしの英語の映画を見て内容が理解できると思いますか? プログラムを組むのは、その後です。 | ||||
|
投稿日時: 2008-10-07 18:43
宣言されていないとでるのは、
For Each I As DataGridViewRow In dgrview.Rows I だから。こう直す。 For Each row As DataGridViewRow In dgrview.Rows 更新は、DataGridView に渡した DataSet があるのでは?そちらで更新すればいいでしょう。 | ||||
|
投稿日時: 2008-10-08 09:23
例え row が宣言できても
DataGridViewRow に RowState が無いからまたエラーが出ますね・・・。 | ||||
|
投稿日時: 2008-10-08 09:42
はい… For Each row As DataGridViewRow In dgrview.Rows Select Case row.RowState Case DataRowState.Added '▼新規追加されたレコードの場合 :Insert文実行 Case DataRowState.Deleted '▼削除されたレコードの場合 :Update文実行 Case DataRowState.Modified '▼修正されたレコードの場合 :Delete文実行 Case Else End Select Next とするとrow.RowStateでエラーになります。 <エラー> 'RowState' は 'System.Windows.Forms.DataGridViewRow' のメンバではありません。 RowStateはここでは取得できないのでしょうか? | ||||
|
投稿日時: 2008-10-08 10:22
やはり Jitta さんの仰っている通り基礎を身に付けるのが先決だと思います。
「それは時間がかかるから・・・」 と思うとしても結果としてこのまま進めるとそれ以上に時間がかかると思います。 「こう書いたら出来るんじゃないの?」→「できました!」 ってなったとしてもまたすぐに 「○○となります。なぜ○○できないのですか?」 と言う繰り返しになると思うからです。 とりあえずこの質問に関して。 RowState が使えないのは DataGridViewRow に RowState プロパティが無いからです。 RowState プロパティがあるのは DataRow です。 なのでそこでは使えません。 | ||||
|
投稿日時: 2008-10-08 10:30
最近、.netを勉強し始めたばかりでとりあえず勉強用の簡単なシステムを作りながら覚えようとしていたのですが、なかなか前には進めずにいます。 もう少し違う方法で学習を続けていこうと思います。 ありがとうございました。 | ||||
|
投稿日時: 2008-10-08 14:47
みなさんお騒がせしました。
なんとか下記のようにして解決できました。 ありがとうございました。 Dim SQL As String Dim Row As DataRow Dim comm As SqlCommand = Con.CreateCommand Dim ds As DataSet = New DataSet() ds = CType(dgrview.DataSource, DataSet) Dim Table As DataTable = New DataTable() Table = ds.Tables("テーブル名") Dim Row As DataRow For Each Row In Table.Rows Select Case Row.RowState Case DataRowState.Added '▼新規追加されたレコードの場合 Case DataRowState.Modified '▼修正されたレコードの場合 Case DataRowState.Deleted '▼削除されたレコードの場合 Case Else Continue For End Select comm.CommandText = SQL comm.ExecuteNonQuery() Next Table.Dispose() ds.Dispose() | ||||
|
投稿日時: 2008-10-09 17:46
DataGridView に所属させている DataSet を Dispose してはいけません。この DataSet は、DataGridView に Dispose させるべきです。 > Dim ds As DataSet = New DataSet() > ds = CType(dgrview.DataSource, DataSet) ds を New していますが、その直後に DataGridView.DataSource のものを設定するので、New した DataSet が浮いてしまいます。New は不要です。 → Dim ds As DataSet = CType(dgrview.DataSource, DataSet) 次の DataTable も同様。 で、DataSet に Update というメソッドがあるので、調べておいてください。 |