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

Вниз

MIDAS, ReconcileError и ClientDataSet.Append   Найти похожие ветки 

 
Nikolay M. ©   (2003-08-04 10:48) [0]

Назрел такой концептуальный вопрос.
В тонком клиенте есть форма редактирования чего-либо, скажем, аквариумных рыбок. При попытке добавить новую запись с неуникальным названием рыбки возникает ошибка на уровне БД (уникальный индекс), которая обрабатывается в обработчике ReconcileError и выдается сообщение пользователю.
Как можно красиво сделать откат ApplyUpdate-а в этом случае? Закрывать окно - грубо, там может быть много введенных данных. Если в ReconcileError делать Action := raCancel и тп, ClientDataSet выходит из режима вставки.
Единственное, что пока пришло в голову - это делать при возникновении ошибки в ReconcileError что-то вроде

Field1ErrorValue := CDS.Fields[0].Value;
...
Field10ErrorValue := CDS.Fields[9].Value;


А на кнопке ОК в форме редактирования делать:

if (CDS.ApplyUpdates (-1) > 0) then
begin
CDS.Append;
CDS.Fields[0].Value := Field1ErrorValue;
...
CDS.Fields[9].Value := Field10ErrorValue;
end;


Или поиграться с Delta, но все равно красотой, имхо, такой вариант не блещет :(
Делать
Action := HandleReconcileError(DataSet, UpdateKind, E);
тоже не очень хочется.


 
Соловьев ©   (2003-08-04 10:56) [1]


> ошибка на уровне БД (уникальный индекс),

а зачем давать пользователи редактировать уникальный индекс?


 
Nikolay M. ©   (2003-08-04 10:59) [2]


> а зачем давать пользователи редактировать уникальный индекс?



> добавить новую запись с неуникальным названием рыбки



 
Соловьев ©   (2003-08-04 11:29) [3]

уникальный индекс с неуникальным названием рыбки - это как? :)


 
Nikolay M. ©   (2003-08-04 11:40) [4]

Разжевываю.
Название рыбки должно быть уникально? Да, чтобы разные юзеры не заводили одинаковых рыбок и из-за этого не возникли дубли по названию. Для этого нужен уникальный индекс по полю "название рыбки".
Btw, редактировать индекс пользователю никто не разрешает, доступно редактирование значений поля, которые должны быть уникально, причем уникальность обеспечивается UNIQUE INDEX-ом по этому полю.


 
Соловьев ©   (2003-08-04 12:08) [5]

raCorrect Replace the current updated record with the value of the record in the event handler.


 
Nikolay M. ©   (2003-08-04 12:16) [6]

Я умею читать хелп :)
В любом случае 10Х за беспокойство :)



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
14-92224
Proger_XP
2003-08-10 11:03
2003.08.28
Как отправить по мылу что-нибудь?


9-91968
hex_for_delphi
2003-02-26 23:21
2003.08.28
где скачать заголовки DirectX 9.0 для Delphi


3-92057
Separator
2003-08-02 16:52
2003.08.28
Paradox7 и тип поля Time


3-92000
Юстос
2003-08-06 05:02
2003.08.28
Как подключить базу данных Ms Access


3-91973
Петров Денис
2003-08-06 17:00
2003.08.28
is not a valid timestamp