Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизПерехват системного сообщение об ошибке Найти похожие ветки
← →
VFP (2003-01-28 11:44) [0]Народ! Есть DBEdit и это поле предназначено для отображения данных из таблицы, а именно дату!!!!
Так вот событие OnExit не успевает срабатывать, если дату ввели неправильно. Так как при выходе есно дело DBEdit пытаеться это записать в базу (конечно он не записывает в базу, но на корректность данные он проверяет) и поэтому если дату ввели не правильно, то срабатывает внутренний обработчик ошибок.
Как перехватить это???
← →
JibSkeart (2003-01-28 12:03) [1]try
except
или делай маску
или проверяй на сабытие onChange
← →
VFP (2003-01-28 12:11) [2]try
except
на какое событие это повесить?
Маску сделать не получиться (долго объяснять).
Событие OnChange (если честно оно меня достало, любое изменение и оно срабатывает, даже если изменение происходило в форме).
За ответ большое спасибо, напиши как быть мне с этой проблемой.
← →
D (2003-01-28 12:19) [3]OnEditError у DataSet ?
← →
JibSkeart (2003-01-28 12:25) [4]try
Qyery.SQL.Clear;
Qyery.SQL.ADD("insert into table(date) value("+Edit1.Text+")")
Qyery.Close;
Qyery.Open;
except
on EError do
showMessage("Вы типа неправильно ввели дату ")
end
EError надо смотреть какая там ошибка
вообшем посмотри в хелпе
я не заню точно как в Дельфях
знаю как Buildere C++
но что то в таком духе
← →
VFP (2003-01-28 12:27) [5]Поле DBEdit у меня привязано к DataSource.
DataSource привязано к ADOQuery.
ADOQuery привязано к ADOConnect.
У ADOQuery есть свойство OnEditError, но оно не срабатывает при ошибке в DBEdit (дата).
Как быть?
← →
Соловьев (2003-01-28 12:32) [6]используй не DBEdit , а готовый компонент Calendar убьешь 2 зайца:
1. Вид, красивее.
2. Пользователь не сможет ввести неправильную(синтаксически) дату.
← →
VFP (2003-01-28 12:41) [7]Как я буду отображать в компоненте Calendar данные из таблицы, вводить может и проще, а вот выводить!!!
В DBEdit я прописал DataSource и все (вот тебе и отображение и возможность изменений).
← →
D (2003-01-28 12:42) [8]Можно в событии OnSetText для конкретного поля (если статический список полей)
procedure TForm1.ADOQuery1Sec_NameSetText(Sender: TField;
const Text: String);
begin
try
Sender.Value:=Text
except
Sender.Value:=null;
showmessage("Неправильно введена дата!");
end;
end;
← →
D (2003-01-28 12:45) [9]Вроде есть компонент DBDateTimeEdit или что-то вроде этого
← →
Соловьев (2003-01-28 12:46) [10]VFP (28.01.03 12:41)
Выводить еще проще...Повесь на какое-нибудь событие...
← →
Соловьев (2003-01-28 12:50) [11]В инете много компонент: www.torry.net, я пользуюсь www.lmdtools.com(прикольные и много)
А на счет DateTimePicker ты подумай, лучше просто не дать пользователю ввести чего-то, чем забросать его месагами что ошибка...
← →
VFP (2003-01-28 12:52) [12]D (28.01.03 12:45)
Где такая компонента DBDateTimeEdit. В стандартных её нет.
Если помнишь где её видел, то напиши.
← →
VFP (2003-01-28 12:55) [13]D (28.01.03 12:45)
Для DBEdit OnSetText нет.
← →
Соловьев (2003-01-28 12:56) [14]www.lmdtools.com там есть DBTimeEdit
← →
D (2003-01-28 12:59) [15]В Query - двойной клик - вызывается редактор полей. Правой кнопкой - добавить все поля. Выбрать нужн.поле (с датой), для него в инспекторе объектов событие OnSetText
Стандартный компонент поищи на странице DataControls
← →
VFP (2003-01-28 13:09) [16]Соловьев © (28.01.03 12:46).
Спасибо за совет использовать DateTimePicker, всё просто здорово и не очень сложно, а то для DBEdit я писал целую функцию для проверки ввода даты.
Всем спасибо за вашу помощь!!!!!!!!!!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c