У меня есть форма в проекте с 2 UltraGrids
на нем. Один показывает информацию о контракте, а другой содержит информацию о модуле.Обновление от UltraGrid, где условие истинно
В сетке контрактов могут быть, например, три строки с уникальным идентификатором контракта. Когда нажимается строка, она заполняет сетку модулей модулями, которые назначаются по этому контракту.
Что мне нужно сделать, это обновление модулей, где contactID в базе данных соответствует идентификатору в выбранной строке контракта.
код у меня до сих пор
For Each ugr As UltraGridRow In ugModules.Rows
For Each ur As UltraGridRow In ugContracts.Rows
mID = ugr.Cells("ModuleID").Text
mName = ugr.Cells("ModuleName").Text
numUsers = ugr.Cells("NumberUsers").Text
sql = "UPDATE dbo.tblModules SET ModuleName = ?, NumberUsers = ? WHERE ContractID = ? AND ModuleID = ?"
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add("@mname", OleDbType.VarChar).Value = mName
cmd.Parameters.Add("@numusers", OleDbType.VarChar).Value = numUsers
cmd.Parameters.Add("@conID", OleDbType.Integer).Value = ur.Cells("ContractID").Value
cmd.Parameters.Add("@mid", OleDbType.Integer).Value = mID
If cmd.ExecuteNonQuery() = 0 Then
sql = "INSERT INTO dbo.tblModules(ModuleID, ModuleName, NumberUsers, ContractID) VALUES(?, ?, ?, ?)"
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add("@mid", OleDbType.Integer).Value = mID
cmd.Parameters.Add("@mname", OleDbType.VarChar).Value = mName
cmd.Parameters.Add("@numusers", OleDbType.VarChar).Value = numUsers
cmd.Parameters.Add("@conID", OleDbType.Integer).Value = ur.Cells("ContractID").Value
cmd.ExecuteNonQuery()
End If
Next
Next
Проблема с этим кодом, в том, что он пытается обновить каждый модуль из каждого контракта, связанного с текущим клиентом, который является причиной столкновений в поле ID ,
Есть ли способ изменить этот код, чтобы он только обновлял записи, в которых был отредактирован contractID, а не все идентификаторы контракта, которые отображаются в таблице контактов?
(Извиняюсь, это немного трудно объяснить, с удовольствием уточнить что-либо, если это кожух путаницы)
Привет, Стив, я уже получил контрактный идентификатор, это не проблема. Это сетка модулей, с которой у меня возникла проблема, поскольку она фильтрует, какие строки она отображает, на основе выбранного контакта (разные модули для разных строк). Поэтому мне нужно только обновлять видимые строки в ultragrid, если это возможно? – Harambe
Как вы фильтруете сетку модулей? Я полагаю, что при выборе контракта сетка модуля заполняется только модулями, принадлежащими этому контракту. Или вы заполняете сетку всеми существующими модулями, а затем используете функциональность фильтра сетки? – Steve
Первый, сетка заполнена модулями в этом контракте – Harambe