Главная страница
    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.005 c
1-80460
новенький в Делфи
2002-03-11 23:22
2002.03.25
ImageList и BitMap


1-80585
KvORubin
2002-03-08 15:10
2002.03.25
Как мне вставить свой курсор в форму !!!!


1-80612
valley
2002-03-11 13:34
2002.03.25
Печать StringGrid a


3-80435
Antony
2002-02-27 12:14
2002.03.25
TQuery.Prepare, сильные утечки памяти


7-80709
Kirill
2001-12-21 20:26
2002.03.25
Format Date





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский