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

Вниз

Глюк отображения при модификации данных на клиенте   Найти похожие ветки 

 
ZDN   (2002-01-28 15:24) [0]

Доброго времени суток, профи!!!

Есть простейшая база, в ней пока всего одна таблица с уникальным
/обеспечивается триггером на сервере/ первичным ключом. Индексы не сделал
ввиду гарантированно малого числа записей в этой таблице /30-50, не более/
CREATE TABLE WORKER (NUMBER INTEGER NOT NULL,
................................
PRIMARY KEY (NUMBER));

CREATE GENERATOR NUMBER_GEN;

CREATE TRIGGER NUMBER_TRIGGER FOR WORKER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.NUMBER=GEN_ID(NUMBER_GEN,1);
END

Клиент реализован следующим образом: на форме расположены DBEdit"ы и
DBNavigator, в качестве источника данных используется IBDataSetSource,
связанный с набором данных IBDataSet1. Для IBDataSet1 включил локальное
кэширование /CachedUpdates=True/.

Содержимое запроса DeleteSQL для IBDataSet1 следующее:
DELETE FROM WORKER
WHERE NUMBER=:Old_NUMBER

Содержимое запроса SelectSQL
SELECT * FROM WORKER

Содержимое запроса InsertSQL:
INSERT INTO WORKER (FioWorker, DocType, Code, Seria)
VALUES (:FioWorker, :DocType, :Code, :Seria)
При этом получение уникального значения с сервера обеспечивается
элементарно посредством следующей процедуры:
procedure TDM.IBDataSet1AfterInsert(DataSet: TDataSet);
begin
if IBDataSetSource.State=dsInsert then
begin
NewIDQuery.Open;
DataSet.FieldByName("NUMBER").AsInteger:=NewIDQuery.Fields[0].asInteger;
NewIDQuery.Close;
end;
end;

Содержимое запроса ModifySQL:
UPDATE WORKER
SET FioWorker=:FioWorker, DocType=:DocType, Code=:Code, Seria=:Seria
WHERE NUMBER=:Old_NUMBER

К набору данных IBDataSet1 подключена транзакция ReadTransaction.
После коннекта с БД набор данных я получаю так:
if not DM.IBDataSet1.Prepared then
begin
DM.IBDataSet1.Close;
DM.IBDataSet1.Prepare;
DM.IBDataSet1.Open;
end;

Внесение изменений на сервер происходит так:
Try
DM.UnalDB.ApplyUpdates([DM.IBDataSet1]);
Except
MessageDlg("Изменения не сохранены", mtError, [mbOK], 0);
DM.IBDataSet1.CancelUpdates;
End;

Проблема в следующем:
при работе с локальными данными /навигация, добавление, удаление,
редактирование/ все работает отлично.
Обновление данных с сервера по кнопке - тоже без проблем.
С добавлением и удалением записей тоже все отлично.
Однако после передачи модифицированных данных на сервер на клиенте
наблюдается следующий СТРАШНЫЙ ГЛЮК /или я чего-то пока не знаю/: измененные
записи /только они, с добавленными все в порядке/ отображаются в DBEdit"ах
пустыми. После принудительного получения данных с сервера все отображается
нормально.
Почему так происходит, я понять не могу. В чем дело? В локальном кэше, в
DBEdit"ах или еще в чем-то?
Если сильно не затруднит, помогите.
Заранее благодарен.


 
ZDN   (2002-01-28 15:26) [1]

Просьба продублировать ответ на мыло. Спасибо.



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

Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
1-66627
TAN
2002-02-06 17:16
2002.02.21
определить, какая именно колонка рисуется


1-66535
Brand
2002-02-04 22:57
2002.02.21
DLL, не завершается основная программа.


3-66452
Laimer
2002-01-28 14:27
2002.02.21
QRepord


1-66508
UnDISCOvery
2002-02-04 16:54
2002.02.21
Уважаемые ! Объясните разницу, плиз !


4-66707
YUS
2001-12-22 05:21
2002.02.21
РЕСУРС





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