Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-80423
Ольга
2002-02-26 15:28
2002.03.25
PackTable


1-80599
JibSkeart
2002-03-11 12:18
2002.03.25
Программно Добавить Итем и СабИтем в TTreeView


3-80420
AcE
2002-02-26 19:37
2002.03.25
запрос к Access


14-80660
Вася Пупков
2002-02-09 15:21
2002.03.25
Вечное движение программного обеспечения


7-80694
andey
2001-12-20 19:28
2002.03.25
подскажите кто знает





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский