Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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, создавал временную таблицу. В этом случае данные спокойно редактируются. Параллельно с временной вносил изменения в нужную мне таблицу. При закрытии соединения временная таблица удалялась. И все smile

Автор: <Spawn> 26.9.2005, 04:45
Попробуй добавить в селект m.ID это раз.

Цитата
но грид даже не дает вводить данные
- Видимо, что нет данных по такой связке, которую ты прописал в WHERE smile

P.S. сложный запрос - это еще очень простой запрос smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)