添加时产品的 ID 号在重新加载表单时不断变化

An ID number for a product when added keeps changing when the form is reloaded

我最近开始重温 vb 中的数据库编程,我正在使用 Northwind 数据库进行测试。

在我的程序中,我有添加、编辑和删除产品的功能。当我使用 Windows 表单将新产品添加到 table 时,产品 ID 会递增(如果最后一个产品 ID 是 70,则新产品将是 71),然后我更新数据库。

然而,我一直遇到的一个问题是,当我再次调试我的表单并转到我刚刚输入的最后一个产品时,ID 已从 71 更改为 84,我不确定为什么会这样。这是我用于添加功能的代码,如果您需要查看我代码的任何其他部分,请告诉我并感谢您的帮助:)

 Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click

    newProduct = NorthwindDataSet1.Products.NewProductsRow()
    newProduct("ProductName") = txtProdName.Text
    newProduct("UnitPrice") = txtUnitPrice.Text
    newProduct("Discontinued") = cbxDiscontinued.CheckState
    newProduct("ProductID") = NewProdID
    Try
        NorthwindDataSet1.Products.Rows.Add(newProduct)
        Try
            Me.Validate()
            Me.ProductsTableAdapter.Update(Me.NorthwindDataSet1.Products)
            MsgBox("Update successful")

        Catch ex As Exception
            MsgBox("Update failed")
        End Try
    Catch x As Exception
        MsgBox("This does not work")
    End Try

    btnAdd.Visible = False
    btnDelete.Enabled = True
    btnCancel.Enabled = True
    btnFirst.Enabled = True
    btnLast.Enabled = True
    btnPrevious.Enabled = True
    btnNext.Enabled = True
    btnNew.Enabled = True
    lblProdID.Visible = True

    ProductsBindingSource.ResumeBinding()
    lblLastPos.Text = ProductsBindingSource.Count
End Sub

无论您的插入查询是否完成,每次对 Access 数据库的插入尝试 table 都会增加自动编号字段。

很常见,自动编号的字段会因删除的记录或失败的插入而产生空白。如果您的 table 从不执行删除操作,或者如果您有自定义 ID 字段并在删除记录时重置计数器,则只能保持连续编号。这也需要手动增加您的自定义 ID。

最好的方法就是忽略间隙.. :)