Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Базы";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-55053
Tahion
2002-05-25 14:01
2002.06.17
Как в DrawGrid-е нарисовать какртинку?


14-55298
Malder
2002-05-14 23:05
2002.06.17
Об UBPFD


1-55191
Jen_Bond
2002-06-05 01:33
2002.06.17
Найти разницу


1-55057
Milg
2002-06-05 14:53
2002.06.17
Как узнать высоту Task Bar’а?


3-55008
button
2002-05-23 15:23
2002.06.17
Как можно изменить длину поля?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский