Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > зачем нужен append в Query?


Автор: Гость_dasha 25.8.2005, 11:13
Добрый день всем. Хотела спросить, может, кто знает, зачем компоненту ТQuery такие методы как AppendRecord, Insert и т.п, если он не привязан к конкретной таблице? К чему он будет добавлять записи? И можно ли этими методами как-то пользоваться?
Дело в том, что я сначала создавала таблицу с помощью TTable.CreateTable, потом делала AppendRecord. Теперь все это делает TQuery с помощью запросов, но записи добавляются ощутимо медленнее.

Автор: bursa 25.8.2005, 11:40
Это для Query, у которых CachedUpdates=true

Автор: Гость_dasha 25.8.2005, 11:50
А как этим пользоваться? Мне как-то не попадалось литературы на эту тему. Может подскажете?

Автор: bursa 25.8.2005, 13:02
В Query ставишь CachedUpdates:=true; ReadOnly=false
UpdateObject:=UpdateSQL1;

В UpdateSQL1.Update к примеру
update tovar set artikul=:my1 where id2=:my2

В Query1BeforePost
Код
    with UpdateSQL1.Query[ukModify] do begin
     Params[0].AsString := Query1.FieldByName('Artikul').asString;
     Params[1].AsInteger := Query1.FieldByName('Id2').asInteger;
    end;
   UpdateSQL1.Apply(ukModify);


Аналогично с добавлением и удалением данных

Смысл всего этого - в Гриде содержатся "закешированные" данные. Ты можешь их менять, удалять и пр. Но сами изменения только через SQL, прописанный UpdateSQL. Если не прописан SQL, изменения не фиксируются

Автор: Гость_dasha 25.8.2005, 14:02
А ReadOnly где, в Гриде? У Query нет такого свойства.

А как эти события вызываются? Нужно написать Query1.UpdateRecord? В этом месте непонятно.
Допустим, я хочу добавить запись. Что писать? Query1.InsertRecord(...)? Тогда получится, что в UpdateSQL1.Insert нужно перечислять значения полей еще раз. Или я чего-то не понимаю? smile

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