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

Вниз

Коды ошибок провайдера.   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2006-08-18 23:35) [40]

Ega23 ©   (18.08.06 16:51) [15]
Не ужели ИП проблема?


 
Anatoly Podgoretsky ©   (2006-08-18 23:39) [41]

Вопросы у тебя нормальные, но паранойя должна быть разумной и главное продуманной.


 
Bless ©   (2006-08-19 09:16) [42]


> Anatoly Podgoretsky ©   (18.08.06 23:29) [36]
>
> Можно и так, конечно. Но все же хотелось не записать изменения
> в базу в любом случае
> Да как же ты запишешь, если например база не позволяет дубли
> или что то еще. С логикой не дружим?


К словам придираетесь? Разумеется, если в базе есть ограничения на значение записи, то оно не пройдет, несмотря ни на какие "unique table".

Пример:
пусть таблица имеет поля код наименование значение
----------------------------
1)
1    Киев               город

Я выбрал эту запись к себе.

После этого кто-то изменил ее на такую
2)
1   Киев-град        город

Я же решил изменить ее на такую:
3)
1    Киев               мегаполис

Если воспользоваться советом sniknik[7], то никакой ошибки не возникнет,мое изменение пройдет, значение  "город" изменится на "мегаполис", но у меня на клиенте останется "Киев", хотя в базе он уже "Киев-град". Так вот, я хочу не чтоб прошло мое изменение, а перехватить ошибку "такой записи больше нет", обновить запись на клиенте до состояния 2) и далее по обстоятельствам.


 
sniknik ©   (2006-08-19 10:09) [43]

> а перехватить ошибку "такой записи больше нет", обновить запись на клиенте до состояния 2) и далее по обстоятельствам.
adResyncConflicts в параметре Update Resync по моему это делает автоматом (не уверен точно потому как не использовал, но по описаниям в хелпах), т.е. если произошол конфликт при записи то конфликтная строка считывается с сервера.
это к тому что не надо будет в ексепте это делать и делить на ошибки по кодам, в эксепте надо только учесть что ошибка была, сообшить ее юзеру, и пускай разбирается.


 
sniknik ©   (2006-08-19 10:17) [44]

а вообще посмотри на королевстве статьи по ADO, ты ямно не используеш его возможности, пытаешся реализовать сам то что уже есть...


 
Bless ©   (2006-08-19 12:00) [45]


> sniknik ©   (19.08.06 10:17) [44]


Статьи про ADO c королевства я читал, хотя о варианте с adResyncConflicts забыл совсем.
Update Resync=adResyncConflicts не обновит мне значение полей в датасете автоматом. Это просто изменит UnderlyingValue у полей со старых на актуальные значения. А вот делать Value равное UnderlyingValue придется вручную. А где делать - это, имхо, дело вкуса. Я хочу в try-except, а не в обработчиках событий dataset-а, как в примере с королевства.
В таможнем примере использования adResyncConflicts стоит обработчик


>    if Reason=erUndoUpdate then begin ///в случае ошибки
>          ReadUnderlyingValues; //тут value := UnderlyingValue
>          EventStatus:=esCancel; //....и прото отменяем обновление
>      end;
>


Этот пример, имхо, полностью аналогичен моему:
try
q.post;
except
    on E: Exception do begin
      q.Cancel;
      RefreshCurRec(q);//обновить текущую запись датасета
    end;
    ...
end;{try}

Т.е. вне зависимости от причины отказа в update, в обеих примерах обновляется текущая запись до актуальных значений и отменяются изменения.

А мне хочется так делать только в случае измененной кем-то другим записи в базе, во всем остальных случаях отказа просто показать ошибку.


 
Bless ©   (2006-08-19 12:15) [46]


> А мне хочется так делать только в случае измененной кем-
> то другим записи в базе, во всем остальных случаях отказа
> просто показать ошибку.


В общем-то, потому и спрашиваю о кодах ошибок, чтоб посмотреть какие они вообще бывают.
А то если причины отказа update ограничиваются только двумя:
- кто-то после меня изменил
- нет прав на изменение.

то можно действительно сделать как в упомянутом примере на королевстве


 
Ega23 ©   (2006-08-21 09:37) [47]


>
> Anatoly Podgoretsky ©   (18.08.06 23:35) [40]
>
> Ega23 ©   (18.08.06 16:51) [15]
> Не ужели ИП проблема?
>


Ты же сам говорил, что паранойя должна быть разумной?



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

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

Наверх




Память: 0.55 MB
Время: 0.057 c
2-1159735665
Aries
2006-10-02 00:47
2006.10.22
Delphi и СУБД


11-1135587146
MTsv DN
2005-12-26 11:52
2006.10.22
Как будет на ASM е...


2-1160053115
Anto}{a
2006-10-05 16:58
2006.10.22
Таблица


2-1159786539
Antoxa2005
2006-10-02 14:55
2006.10.22
Что это за ЗВЕРЬ. После разработки проекта оказалось, что програм


2-1160388362
SamProf
2006-10-09 14:06
2006.10.22
Как сделать запрос IdHTTP.Get(<url>) методом POST в 10 Indy?