tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルACCESSにデータを追加後オートナンバーをデータグリッドに表示したい
記事No10857
投稿日: 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

[ツリー表示へ]