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