Я недавно начал возвращаться к программированию базы данных в vb, и я использую базу данных Northwind для тестирования.Идентификационный номер продукта при добавлении продолжает меняться при перезагрузке формы
В моей программе я добавляю, редактирую и удаляю функциональность для Продуктов. Когда я добавляю новый продукт в таблицу с помощью Windows Forms, идентификатор продукта увеличивается (если последний идентификатор продукта равен 70, новому продукту будет 71), а затем я обновляю базу данных.
Однако проблема заключается в том, что когда я снова отлаживаю свою форму и перехожу к последнему продукту, который я только что ввел, идентификатор изменился с 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
Является ли идентификатор продукта IDENTIY или Autonumber в вашей базе данных? Если да, то у вас нет контроля над его значением, но вы получаете то, что возвращает сервер базы данных. – Steve
ProductID - это номер автономера в качестве первичного ключа. Последний продукт имеет идентификатор 77, но новые продукты будут добавлены в 80-е годы, так как я считаю, что он рассчитывает на тестовые продукты, которые я добавил и удалил. – Weeksy
Расширяясь от того, что было указано, автоответчики не предназначены для потребления человеком , Да, когда начинается новая запись, новое значение автонабора «используется». Даже если вы никогда не сохраняете запись или сохраняете, а затем удаляете ее. Если важно не иметь пробелов в нумерации, вам нужно использовать только длинное целое поле и увеличивать его самостоятельно. – AVG