Цитата:
Сообщение от @NDREYK@
Я створив клієнта під б\д на InterBase.. Все прекрасно, але ця програма орієнтується на не досвідченого користувача, а тому я хочу написать обробник помилок на не коректне заповнення полів б\д клієнтом. Або взагалі коли якесь поле не є заповненим, щоб клієнт відразу не повисав, так як у мене((, а просту оброблялася і видавалась помилка.. наприклад поле прізвище не заповнене, заповніть його!!! ну і тому подібне.. Допоможіть!!!!
|
Украинский не такой уж и сложный язык для понимания)
Я написал клиента под базу данных InterBase.. Все прекрасно, но эта программа ориентируется на неопытного пользователя, а я хочу написать обработчик ошибок на некорректное заполнение полей в базе данных клиентом. В общем, если какое-то поле не заполнено, что б клиент не зависал, так как у меня ((, а просто обрабатывалась и выдавалась ошибка.. например поле Фамилия не заполнено, "заполнить его!!!" Ну и того подобное. Помогите!!!!!
У компонента TDataSet - есть событие OnBeforePost, создай обработчик данного события с примерно таким кодом:
Код:
procedure TSPUsersForm.qrySprReferBeforePost(DataSet: TDataSet);
var
ErrorMsg: ansistring;
begin
with qrySprRefer do //твой датасет
begin
ErrorMsg := '';
if FieldByName('person_role_id').IsNull then ErrorMsg := ErrorMsg+#10+#13+'- не указана Роль;';
if StrIsNull(FieldByName('fio'),true) then ErrorMsg := ErrorMsg+#10+#13+'- не указано ФИО;';
if StrIsNull(FieldByName('job_position'), true) then ErrorMsg := ErrorMsg+#10+#13+'- не указана Должность;';
if StrIsNull(FieldByName('login'), false) then ErrorMsg := ErrorMsg+#10+#13+'- не указан Логин;';
if StrIsNull(FieldByName('password'), false) then ErrorMsg := ErrorMsg+#10+#13+'- не указан Пароль;';
if ErrorMsg <> '' then
begin
MessageDlg('Невозможно сохранить запись:' + String(ErrorMsg), mtError, [mbOk], 0);
Abort;
exit;
end;
end;
end;
Вспомогательные функции, если вдруг понадобятся:
Код:
function DeleteSpaces(const aValue:String):String;
//удаляет из строки пробелы в начале, конце, и в центре двойные пробелы.
var
st, en:integer;
begin
Result:='';
if Length(aValue)>0 then
begin
st:=1;en:=Length(aValue);
while (aValue[st] = ' ') do Inc(st);
while (aValue[en] = ' ') do Dec(en);
Result:=Copy(aValue,st, en-st+1);
while (Pos(' ',Result) <> 0) do Delete(Result,Pos(' ',Result),1);
end;
end;
function StrIsNull(const aField:TField; const aIsDeleteSpaces:Boolean):Boolean;
// возвращает истину если строковое поле датасета равно нулу или длина поля равна нулю.
begin
if aField.IsNull then Result:=true
else
begin
if aIsDeleteSpaces then aField.AsString:=DeleteSpaces(aField.AsString);
if Length(aField.AsString) = 0 then Result:=true
else Result:=false;
end;
end;