![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день.
Не могу разобраться как сделать обновление таблицы, но только тех записей, которые выбраны в гриде. Одну запись обновляю так: Код:
myQuery := TADOQuery.Create(nil); myQuery.Connection := DM_prolongatsiya.ADOConnect_baza_prolongatsiya; myQuery.SQL.Clear; myQuery.Parameters.Clear; myQuery.SQL.Text := 'UPDATE tab_prolongatsiya SET otvetstvenniy = :otv WHERE id_prolongatsiya = :id'; myQuery.Parameters.FindParam('otv').Value := f_prolongatsiya.DBLookupComboBox2.Text; myQuery.Parameters.FindParam('id').Value := DM_prolongatsiya.ADOQ_prolongatsiya.FieldByName('id_prolongatsiya').Text; myQuery.ExecSQL; myQuery.Free; |
#2
|
|||
|
|||
![]() А в чем проблема? Что конкретно не получается?
Идея, в принципе, правильная. Теперь просто в цикле надо обновить все записи. Ты не написал каким образом у тебя сделано выделение разных записей и какое значение надо присвоить полю otvetstvenniy. Если одно и тоже, то можно схитрить - все сделать одним запросом. Пусть у тебя есть массив идентификаторов записей (как ты его соберешь - другой вопрос, что бы на него ответить надо больше информации). Тогда запрос можно сделать так: Код:
var AID : Array Of Integer; // array with ids I : Integer; strIn : String; begin ... strIn := ''; For I := Low(AID) To High(AID)-1 Do strIn := strIn + AID[i] + ', '; strIn := '(' + strIn + AID[High(AID)] + ')'; ... mQuery.SQL.Text := 'UPDATE tab_prolongatsiya SET otvetstvenniy = :otv WHERE id_prolongatsiya IN ' + strIn; myQuery.Parameters.FindParam('otv').Value := f_prolongatsiya.DBLookupComboBox2.Text; myQuery.ExecSQL; ... Последний раз редактировалось lmikle, 12.10.2025 в 18:46. |
#3
|
|||
|
|||
![]() Цитата:
Здравствуйте, lmikle. Я предполагал что это через цикл, но не знаю как в данном случае его написать. Задумка такая: Пользователь в Гриде (DBGrid1) выделяем те строки (включена опция мультивыбор) где нужно изменить "ответственного". Выбор происходит кликом мыши. Далее из выпадающего списка (DBLookupComboBox2) выбирается новое значение. При нажатии на кнопку (Button2) программа обновляет данные в столбце otvetstvenniy таблицы tab_prolongatsiya на значение из DBLookupComboBox2. Как обновить одну запись - знаю, как обновить все строки из грида - знаю. А вот чтобы обновлять только выделенные еще не делал. Попробовал применить Ваш код, но Delphi подсвечивает Код:
AID : Array If Integer; |
#4
|
|||
|
|||
![]() Ну, блин, опечатка же.
Должно быть Код:
AID : Array Of Integer; |