Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват системного сообщение об ошибке [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо