Вниз
Скачать: CL | DM;

Обязательное поле....   Найти похожие ветки 

← →
Express   (2005-12-18 18:33) [0]

Помогите, у меня в таблице есть обязательные поля, как мне обработать ошибку, если пользователь не заполнил это поле??????


← →
mfender ©   (2005-12-18 18:50) [1]

Если пользователь не заполнил поле, то его нужно заполнить, иначе теряется смысл. Проверять всё это надо, поставив обратчик на onBeforePost.


← →
Виталий Панасенко   (2005-12-19 09:20) [2]


> mfender ©   (18.12.05 18:50) [1]
> Если пользователь не заполнил поле, то его нужно заполнить,
>  иначе теряется смысл. Проверять всё это надо, поставив
> обратчик на onBeforePost.

Если мне память не изменяет, то это событие срабатывает ПОСЛЕ проверки на обязательность заполения.. Т.е. ошибка все равно (сообщение) будет...
OnPostError:
Occurs when an application attempts to modify or insert a record and an exception is raised.

Delphi syntax:

property OnPostError: TDataSetErrorEvent;

C++ syntax:

__property TDataSetErrorEvent OnPostError = {read=FOnPostError, write=FOnPostError};

Description

Write an OnPostError event handler to handle exceptions that occur when an attempt to post a record fails.


← →
Desdechado ©   (2005-12-19 10:44) [3]

Виталий Панасенко
не проснулся? :)
ОnBeforePost и OnPostError - разные вещи
проверять надо в ОnBeforePost, как правильно выше было сказано


← →
evvcom ©   (2005-12-19 10:47) [4]

Field.Required еще есть


← →
Виталий Панасенко   (2005-12-19 11:05) [5]


> Desdechado ©   (19.12.05 10:44) [3]
> Виталий Панасенко
> не проснулся? :)
> ОnBeforePost и OnPostError - разные вещи
> проверять надо в ОnBeforePost, как правильно выше было сказано

Но в Д5 это не так... :-))))
procedure TDataSet.Post;
begin
 UpdateRecord;
 case State of
   dsEdit, dsInsert:
     begin
       DataEvent(deCheckBrowseMode, 0);
       CheckRequiredFields;
       DoBeforePost;
       CheckOperation(InternalPost, FOnPostError);
       FreeFieldBuffers;
       SetState(dsBrowse);
       Resync([]);
       DoAfterPost;
     end;
 end;
end;


← →
Express   (2005-12-20 13:15) [6]

Народ свем спасибо за советы!!!, но они все равно не помогли справиться с этой проблемой!!!! Получается так, что OnPostError не успевает обрабатывать эту ошибку(хотя мне кажется что именно он должен это делать), а ОnBeforePost как раз вызывается перед тем как происходит эта ошибка....

У меня есть одно имея, но она мне тоже не нравиться: Если получать список всех поле в обработчике ОnBeforePost, проверять на обязательное заполнение и если что то не то выводить сообщение и все такое....

Как вам эта мысль???? мне по прежнему нужны ваши советы!!!!!!!


← →
Johnmen ©   (2005-12-20 13:20) [7]

Да-да, перед постом делать нужные тебе проверки. И принимать решение - постить или сообщать и давать исправиться...


← →
evvcom ©   (2005-12-20 14:07) [8]


> Express   (20.12.05 13:15) [6]

А [4] попал в full ignore? А как тебе идея в AfterOpen сделать
MyDataSet.FieldByName("MyField").Required := True;?


← →
Виталий Панасенко   (2005-12-20 14:14) [9]

Есть еще один вариант - использовать OnValidate-событие интересующих полей... Может, опять не проснулся...


← →
evvcom ©   (2005-12-20 14:28) [10]


> Есть еще один вариант - использовать OnValidate-событие
> интересующих полей

Это для более сложных случаев. Здесь вообще фсё просто.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.03 c
2-1138605317
Дмитрий_К
2006-01-30 10:15
2006.02.19
DBGrid - MultiSelect -3


2-1138709886
Andrey235
2006-01-31 15:18
2006.02.19
Как узнать имя компонента


2-1139063422
user2
2006-02-04 17:30
2006.02.19
Запрос


2-1138883438
Daria
2006-02-02 15:30
2006.02.19
проблемы с null


6-1131478836
Bruce
2005-11-08 22:40
2006.02.19
Задержка при отправке данных. Indy.




   Наверх