| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Изменение данных в DBgrid |
| Автор: newbee 24.9.2005, 19:49 |
| Здравствуйте, мне необходимо изменять данные в DBgrid, основой которого является сложный запрос (данные из 4 таблиц, менять надо данные из двух таблиц). Я перелопатил кучу инфы, но Grid отказывается менять даже данные из одной таблицы. Пробовал RequestLive:=true / CachedUpdates:=true; Привязывал UpdateSQL к Query. Вот мой запрос для вывода данных в DBGrid query1.sql.Add('Select m.number, t.name, m.plus, m.minus, (m.plus+m.minus)*t.procent as Sum'); query1.sql.Add('from money m, typeav t, itemav i ,site s'); query1.sql.Add('where (m.number=i.number)'); query1.sql.Add('and (i.typeid=t.id)'); query1.sql.Add('and (m.salID = s.id)'); query1.sql.Add('and (m.curdate="'+ DateToStr(datetimepicker1.date)+'")'); query1.sql.Add('and (s.name="'+ combobox1.text +'")'); В Modify Updatesql сгенерировано update money set Plus = :Plus, Minus = :Minus where Id = :OLD_Id И процедура procedure TForm1.Query1UpdateRecord(DataSet: TDataSet; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); begin UpdateSQL1.Apply(ukModify); end; PS Пробовал onkeypress в grid делать что-то типа if Key = #13 then //The enter key! begin if Query1.State = dsEdit then begin Query1.Post; end; end; но грид даже не дает вводить данные. |
| Автор: Vet 25.9.2005, 23:29 |
| Была подобная проблема. Я работал с ADO, создавал временную таблицу. В этом случае данные спокойно редактируются. Параллельно с временной вносил изменения в нужную мне таблицу. При закрытии соединения временная таблица удалялась. И все |
| Автор: <Spawn> 26.9.2005, 04:45 | ||
Попробуй добавить в селект m.ID это раз.
P.S. сложный запрос - это еще очень простой запрос |