Я пытаюсь создать небольшое приложение, позволяющее пользователям читать содержимое таблицы, описывающей инвентарь склада, и искать в зависимости от 2 строк, указывающих, на каком складе находится товар, и по назначенному ему штрих-коду, который мне уже удалось получить. работать с использованием источника привязки и представления таблицы данных, обновляя представление через запрос, используя штрих-код и местоположение в виде строк из двух блоков.
Вторая часть, которая мне понадобится для того, чтобы это приложение соответствовало моей основной цели, заключалась в том, чтобы иметь возможность добавлять новые строки и сохранять их в исходной таблице базы данных, чтобы пользователи могли добавлять новые элементы независимо от хранилищ напрямую.
Пока что я столкнулся с двумя проблемами: мне нужен первичный ключ, который бы представлял последовательный идентификатор, но я не знаю, как создать последовательно увеличивающийся идентификатор, мне удается получить первый идентификатор добавления с помощью запроса top 1 order by desc
комбинации, но данные не обновляются после добавления новой строки, что приводит к ошибке, так как он пытается добавить еще одну строку с тем же значением для первичного ключа.
Вторая проблема, с которой я сталкиваюсь, заключается в следующем: вид сетки изменяется в соответствии с данными, вводимыми в текстовые поля, которые я настроил для сбора различных значений для таблицы, но таблица в самой базе данных не показывает никаких изменений, сохраняя только тестовые данные. я ввел при его создании.
Public Class AddItems
Private Sub AddItems_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'MagazzinoDataSet.LastUsedID' table. You can move, or remove it, as needed.
Me.LastUsedIDTableAdapter.LastUsedID(Me.MagazzinoDataSet.LastUsedID)
'TODO: This line of code loads data into the 'MagazzinoDataSet.Stock' table. You can move, or remove it, as needed.
Me.StockTableAdapter.Fill(Me.MagazzinoDataSet.Stock)
'TODO: This line of code loads data into the 'MagazzinoDataSet.AddWarehouseList' table. You can move, or remove it, as needed.
Me.AddWarehouseListTableAdapter.AddWarehouseList(Me.MagazzinoDataSet.AddWarehouseList)
'TODO: This line of code loads data into the 'MagazzinoDataSet.WarehouseList' table. You can move, or remove it, as needed.
Me.WarehouseListTableAdapter.Fill(Me.MagazzinoDataSet.WarehouseList)
'TODO: This line of code loads data into the 'MagazzinoDataSet.Stock' table. You can move, or remove it, as needed.
Me.StockTableAdapter.Fill(Me.MagazzinoDataSet.Stock)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim R As DataRow = MagazzinoDataSet.Tables("Stock").NewRow()
R("Supplier") = Supplier.Text
R("Producer_code") = ProducerCode.Text
R("Barcode") = Barcode.Text
R("Comp_name") = ComponentName.Text
R("Warehouse") = Warehouse.Text
R("Internal_Code") = InternalCode.Text
R("Description_IT") = ITDescr.Text
R("Description_EN") = ENDescr.Text
'R("ID") = NextID.SelectedValue <- this would be an hidden uneditable multibox containing the product of the query finding the next value to be inserted in the table (basically last ID + 1, nothing fancy)"ID" would be the primary key of this table
R("Quantity") = "0"
MagazzinoDataSet.Tables("Stock").Rows.Add(R)
DataGridView1.DataSource = MagazzinoDataSet.Stock
End Sub
End Class
Подводя итог:
- Как мне обновить таблицу базы данных, чтобы включить новую строку?
- Есть ли умный способ найти последнее значение, увеличив его на 1, чтобы получить следующее значение, и обновив его при вставке новой строки, чтобы не заканчивать двумя строками с одинаковым значением для первичного ключа, генерируя ошибка?