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

Ошибки   Найти похожие ветки 

← →
Proton   (2002-05-22 21:03) [0]

Господа а не подскажите ли как сделать такое. Вот юзверь вводит данные в форму на поле (например) name стоит свойство not null, то есть должно быть заполненно. Так вот юзверь его не заполнил и нажал Post, после чего вылазит ошибочка типа
The insert failed because a column includes validation constraints. Validation error for comlumn xxxx, value "***NULL***". и SQL код равный -625

1)Так нужно по человечески (извеняюсь по Русски) написать юзверю что поле XXXX

нужно заполнять и тыкнуть его тула (DBEdit_xxxx.setfocus);
Ну и конечно не плохо было бы узнать с какой табличкой такое приключилось?

2)Если у кого есть перевод SQL кодов по скажите где взять или на мыло. Итого нужно знать название поля и таблицы.

3)И еще как отловить ошибки сгенерированные тригером?

Прошу учесть что это все проделовается на IB6 сервер от Firebird, на Delphi 5, для связи с Бд пользуюсь FIBPlus (и клиентом FB).


← →
Serhy ©   (2002-05-23 02:14) [1]

1)Если это TTable, то OnBeforePost проверяй. В противном случае - проверяй на ButtonPost.Click.


← →
abp ©   (2002-05-23 11:29) [2]

Я в таких случаях поступаю немного подругому, чем рекомендует Serhy. У меня на форме ввода данных присутствуют поля типа TEdit или другие, но не поля типа TDBEdit. Перед тем как вводить данные в базу, я проверяю корректность всех введенных данных. Если все нормально, то данные из полей ввода переносятся в базу, в противном случае использую следующую конструкцию:
if Edit1.Text = "" then // Поле не должно быть пустым
begin
Edit1.SetFocus;
raise Exception.Create("Поле не должно быть пустым");
end;
// Ввод данных в базу


Может это громоздко, но дает 100% гарантию того, что пользователь заполнит все поля и правильно.


← →
IrenFD ©   (2002-05-23 12:00) [3]

Если объединить событие BeforePost и вариант предложеный abp,
только вместо Edit1 проверять DBEdit1 все будет работать так-же
Конструкция raise отменит сохранение данных.


← →
kaif ©   (2002-05-23 12:42) [4]

Если использовать для редактирования потомков TDataSet, то можно в полях TField указывать Required = True. Кстати, обычно это свойство выставляется автоматически, если поле NOT NULL. Если это все сделано, то ругаться будет уже не сервер, а сам DataSet. Во-первых это быстрее срабатывает, чем реакция сервера.
Во-вторых, используя русские ресурсы для Delphi (есть такая библиотека) можно все перевести на русский не напрягаясь.
В-третьих, Required = True еще и фокус ввода ставит на DataAware control, который служит для редактирования этого поля.

Если же дело дошло именно до реакции сервера, то я рекомендую написать обработчик Application.OnException, где анализировать код ошибки IB и выводить сообщения по вкусу.


← →
Proton   (2002-05-23 14:49) [5]

Мне охото не избежать ошибки (проверкой до post"а) и корректно ее обработать - то есть сообщить польователю о ее наличии. Ошибка с назаполнением поля это только пример. Реально могут возникнуть и ошибки связанные с повтором ключевых полей и т.д. Ключевые поля на клиенте проверять нецелесообразно так как это делает сервер - и два разо проверять как то неправильно.

RE> Application.OnException
- вот вопрос как раз в том как этот код проанализировать. Мжет есть какой ни будь другой способ что бы резать полученную строку и выковыривать из нее данные?


← →
Johnmen ©   (2002-05-23 15:09) [6]

А еще есть событие OnPostError



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

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



Память: 0.46 MB
Время: 0.014 c
8-55230
Al_va
2002-02-01 12:59
2002.06.17
Свойства ShockwaveFlash


3-55021
VAleksey
2002-05-22 14:15
2002.06.17
FastReport


1-55183
space lord
2002-06-05 00:19
2002.06.17
Завтра зачет по Delphi help pleazzzzzzz.Водиться ряд целых чисел.


7-55322
Denis83
2002-03-19 17:25
2002.06.17
DVD


1-55120
PTE
2002-06-06 10:15
2002.06.17
Как по нажатию кнопки удалить процедуру из кода программы?




   Наверх