SQL Server からのデータが取り込まれる Datagridview があります。これは問題なく動作します。
テーブルにレコードを挿入または更新するたびに、テーブルのIDENTITY
名前付きの列を RESEED したいのですCarID
が、レコードが削除されることがあるため、IDS の順序が正しくないように見えます。
私のコードでは、「SQLCOMMANDBUILDER」を使用して、挿入、更新、または削除操作を実行しています。
以下のコードを試してみましたが、「テーブル 0 が見つかりません」という例外エラーがスローされます。
どこを修正すればよいですか??
//THESE ARE CODE TO RESEED AN IDENTITY COLUMN
Sub ResetIDColumn()
Try
Dim querystring As String = "declare @max int " &
"Select @max=max([CarID]) FROM [dbo].[Cars]" &
"if @max IS NULL SET @max = 0 " &
"DBCC CHECKIDENT ('[Cars]', RESEED,@max)"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
//CODE TO PUPOLATE DATAGRIDVIEW
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs)
Handles MyBase.Load
Try
Dim querystring As String = "SELECT * FROM [dbo].[Cars]"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
//CODE TO INSERT OR UPDATE DATA
Private Sub btnUpdate_Click(sender As System.Object, e As System.EventArgs) Handles btnUpdate.Click
ResetIDColumn()
Try
da.Update(ds.Tables(0))
MessageBox.Show("Update was successful!", "Data")
Loaddata()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
//CODE TO LOAD DATA
Sub Loaddata()
Dim querystring As String = "SELECT * FROM [dbo].[Cars]"
ds = New DataSet
da = New SqlDataAdapter(querystring, con)
cmdbuilder = New SqlCommandBuilder(da)
da.Fill(ds)
DgvCarList.DataSource = ds.Tables(0)
DgvCarList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
End Sub