Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.25;
Скачать: CL | DM;

Вниз

Транзакция. Как это сделать?   Найти похожие ветки 

 
UncleRu ©   (2002-02-19 20:08) [0]

Клиентская прога работает с IntreBase5.0. Провожу вставку записи в таблицу и отображение в DBGrid осуществляется только после завершеня транзакции, т.е. после Commit. Вот только это не годится каждый раз после вставки одной строки сразу данные пересылать на сервак. Надо выполнить ряд инсертов, а потом заслать все вставляемые записи завершением транзакции. Как сделать на Delphi5.0 так, чтобы до выполнения commit внесённые данные отображались в DBGrid, но при этом они не были отосланы на сервер? И возможно ли такое вообще?


 
Иван Шихалев ©   (2002-02-19 22:00) [1]

1. Через какие компоненты работаешь?
2. Не должно вообще быть никаких проблем, если Grid и ввод данных сидят на одном DataSet.


 
petr_v_a ©   (2002-02-19 23:43) [2]

>Надо выполнить ряд инсертов, а потом заслать все вставляемые >записи завершением транзакции

транзакция - понятие исключительно серверное, пока записи не "засланы", и коммитить, с точки зрения сервера, нечего, т.к. никаих insert/update не выполнялось.

>чтобы ... внесённые данные отображались в DBGrid, но при этом >они не были отосланы на сервер

у Dataset`а CachedUpdates=true, при этом все измения данных в dataset`е будут выполняться только в его внутренних(на клиенте!) буферах(RecordBuffers). Для "засылания" используйте dataset.ApplyUpdates, при этом изменения буферов будут скинуты в базу. А после этого для фиксации транзакции на сервере - commit



 
UncleRu ©   (2002-02-20 17:00) [3]

To petr_v_a

Попробовал все ваши указания, но что-то не получается, а именно при отладке проверяю параметр UpdatesPending и он равен False, хотя CachedUpdates=true. Данные в DBGrid по прежнему не отображаются. Что я делаю не так и какое занчение желательно выставлять в BufferChunks?


 
Johnmen ©   (2002-02-20 17:18) [4]

1. Через какие компоненты работаешь?


 
Fareader ©   (2002-02-20 18:11) [5]

1. А ты подключил к Query компонент UpdateSql?
2. В UpdateSql сгенерировал SQL запросы на обновление?
3. Пользуешься одним и тем же Query для вставки и отображения в грид?


 
UncleRu ©   (2002-02-21 14:00) [6]

Использую IBDataSet. В его свойствах DeleteSQL, InsertSQL, ModifySQL, SelectSQL и RefreshSQL написаны соответствующие запросы. CachedUpdates=true, UpdateRecordTypes все true.
Я вообще-то добился уже своего, но мне кажется что всё равно это не верно, видать при таком коде данные пересылаются в БД только без commit, а заметить это мне трудно так как сам сервак InterBase у меня же на машине и стоит и всё выполняется молниеносно... Может потом при эксплуатации и всплывут эти ошибки. Вот как это выглядит:
IBDSPatient.Close;
IBDSPatient.QInsert.Params.ByName("NAME").AsString :=
fmAddPacient.edFIO.Text;
case fmAddPacient.RadioGroup1.ItemIndex of
0: IBDSPatient.QInsert.Params.ByName("SEX").AsInteger:=1;
1: IBDSPatient.QInsert.Params.ByName("SEX").AsInteger:=0;
end; // case
IBDSPatient.QInsert.Params.ByName("birthday").AsString:=
DateToStr(fmAddPacient.DateTimePicker1.Date);
IBDSPatient.QInsert.Prepare;
IBDSPatient.QInsert.ExecQuery;
IBDSPatient.Open;

Через ApplyUpdates ничего не получается и параметр UpdatesPending почему-то False. Где здесь ошибка?


 
Fareader ©   (2002-02-21 16:20) [7]

Нужно использовать IBUpdateSQL. В проперти IBDataset UPdateObject укажи IBUpdateSQL, а код на удаление, вставку и изменение напиши не в IBDataset, а в IBUpdateSQL


 
UncleRu ©   (2002-02-22 19:56) [8]

Спасибо всем за советы... Буду пробовать.


 
Alexon   (2002-02-25 14:14) [9]

Pobrobuj ispojzovatj ne IBDataSet.ApplyUpdates, a
IBDataBase.ApplyUpdates([IBDataSet])



Страницы: 1 вся ветка

Текущий архив: 2002.03.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-80429
new
2002-02-26 10:35
2002.03.25
Kak konetktirovat s MSSQL Server chtobi rabotal bistree?


1-80463
Vince
2002-03-05 22:03
2002.03.25
Генерация собственных событий


1-80591
AL Greko
2002-03-09 15:41
2002.03.25
CAD Library


1-80470
wicked
2002-03-12 12:11
2002.03.25
что получилось из сломанного телека VUDZ а через полчаса...... :)


3-80390
Malder
2002-02-20 21:25
2002.03.25
Как управлять записями пользователей в Firebrid