タイトル | : ACCESSにデータを追加後オートナンバーをデータグリッドに表示したい |
記事No | : 10857 |
投稿日 | : 2012/06/27(Wed) 10:38 |
投稿者 | : かっちゃん |
お世話になります。また、よろしくお願いします。 VB2010でDataRowに追加した結果をACCESSに書き、datagridviewに表示するのですが 追加内容は表示されますが、データ型がオートナンバーのキーはdatagridviewでは ブランクになります(ACCESSの追加されたデータにはIDの番号が入っていました) datagridviewをRefreshしてみたのですが、やはりブランクです。 一度クローズして再読み込みすれば表示されますが更新後表示したいと思います。
また、更新ロジックを作ってみました。VB6.0を専門にしてきたので最適なロジックかは わかりませんが変更・削除はできています。 問題はないでしょうか、よろしくお願いいたします。
**ACCESSデータ** ID : オートナンバー型 LibraryNa : テキスト型 LibraryKna : テキスト型 ********** Imports System.Data.OleDb
Private wkCNN As New OleDb.OleDbConnection Private wkCMD As New OleDbCommand Private LibAdp As OleDb.OleDbDataAdapter Private LibDs As New DataSet Private LibDt As New DataTable Private oledbCmdBuilder As OleDbCommandBuilder dgdGrid:datagridview LibraryM:マスター
wkstrSql = "select * from LibraryM ORDER BY LibraryNa Asc" wkCMD.CommandText = wkstrSql LibAdp = New OleDbDataAdapter(wkCMD) LibDs = New DataSet LibAdp.Fill(LibDs, "LibraryM") LibDt = LibDs.Tables("LibraryM") dgdGrid.Columns.Clear() dgdGrid.DataSource = LibDs dgdGrid.DataMember = "LibraryM"
' 更新ボタンの処理 Private Sub cmdUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdUpdate.Click oledbCmdBuilder = New OleDbCommandBuilder(LibAdp)
Dim dtrow As DataRow If rdoAdd.Checked = True Then ' 追加 dtrow = LibDt.NewRow Else ' 変更・削除 Dim pk() As DataColumn = {LibDt.Columns("ID")} LibDt.PrimaryKey = pk dtrow = LibDt.Rows.Find(wkintKey) End If If rdoAdd.Checked = True Or rdoChg.Checked = True Then ' 追加・変更 dtrow("LibraryNa") = Trim(wkstrTxt1) 'テキストボックス1の内容 dtrow("LibraryKna") = Trim(wkstrTxt2) 'テキストボックス2の内容 If rdoAdd.Checked = True Then ' 追加 LibDt.Rows.Add(dtrow) Else ' 更新 LibAdp.Update(LibDt) End If End If If rdoDel.Checked = True Then ' 削除の時 dtrow.Delete() End If LibAdp.Update(LibDs, "LibraryM") END SUB
|