0

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
4

1 に答える 1