添加表单时,添加产品的ID号会不断更改

时间:2015-09-15 12:05:55

标签: database vba ms-access northwind

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

在我的程序中,我添加,编辑和删除了产品的功能。当我使用Windows窗体向表中添加新产品时,产品ID会正常递增(如果最后一个产品ID为70,则新产品将为71),然后我更新数据库。

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

 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

1 个答案:

答案 0 :(得分:0)

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

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

最好的办法就是忽略差距.. :)