![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Событие в DBGrid или в DataSet ??
Анна © (2009-11-25 16:49:00)С помощью ADOQUERY создаю временную табл и помещаю туда данные, с 2 полями формата DATETIME
ADOQ1.Close;
ADOQ1.SQL.Clear;
ADOQ1.SQL.Add('IF (object_id(''tempdb..#prochee'') is null) create table #prochee (datetime datetime,FIO_director varchar(20),Post_person varchar(30),FIO_person varchar(20),Phone_person varchar(20),Date_document datetime,Notes varchar(500)');
ADOQ1.SQL.Add(' PRIMARY KEY (datetime))');
ADOQ1.ExecSQL;
ADOQ1.Close;
ADOQ1.SQL.Clear;
ADOQ1.SQL.Add('IF (select count(*) from #prochee)=0 insert into #prochee');
ADOQ1.SQL.Add('select a.datetime,a.FIO_director,a.Post_person,a.FIO_person,a.Phone_person,a.Date_docum ent,a.Notes from start_tabl a,own');
ADOQ1.SQL.Add('WHERE a.id_own=own.id_own and');
ADOQ1.SQL.Add(' own.iki_own='+leftstr(sp_own.Text,pos(' ',sp_own.Text)-1));
ADOQ1.SQL.Add('and (datetime ='+ quotedstr(formatdatetime('yyyymmdd',strtodate(sp_dat.text)))+'or datetime='+quotedstr(formatdatetime('yyyymmdd',znach_dat))+')');
ADOQ1.SQL.Add('and a.tops=''S''');
ADOQ1.ExecSQL;
дальше эту врем табл связываю с DBGrid. При редактировании ячейки грида, где надо занести дату, набираю просто текст ('hhhh') и перехожу на след ячейку. При переходе не могу найти событие, в котором бы нужно обработать введеную дату на корректность. Перепробовала почти все события (ADOQ1AfterEdit,ADOQ1AfterInsert,ADOQ1BeforePost...) не успевает ни в одно событие заходить, ругается: Class EConvertErrow with message "pppp" is not valid date and time" Какое событие нужно обработать, чтобы не допустить вставки некорректной даты в временную табл.?
Sergey13 (2009-11-26 11:56:00) [41]А какой смысл в использовании временной таблицы если она заполняется обычным запросом?
Анна (2009-11-26 11:48:00) [42]
> Anatoly Podgoretsky © (26.11.09 11:14) [6]
Я не могу в инспекторе объектов это поле добавить, т.к оно во временной таблице. Начинаю обманывать инспектор, пишу в нем select Date_document from start_tabl, потом делаю add Fields --- получаю объект ADOQ1Date_document:TDateTime где получаю доступ к методам onvalidate,onsettext...и свойствам (там маска ввода есть) Но при запуске программы ругается, что нет такого поля Date_document что и естественно, ведь в программе у меня табл #prochee. А как динамически в программе все это сделать (без инспектора объектов) не знаю.
ADOQ1Date_document
Anatoly Podgoretsky (2009-11-26 11:14:00) [43]> Анна (26.11.2009 10:51:05) [5]
Я тебе точно не скажу, я не работал с onValidate, но там вроде нужно вызвать метод Abort
А событие нужно привязывать к конкретному полю, которое надо предварительно создать, смотри мои рассуждения по этому в сообщение http://www.delphimaster.ru/cgi-bin/forum.pl?id=1259081869&n=1
И конечно справку
> If the OnValidate event handler does not raise an exception, the data is written to the current record buffer.
Анна (2009-11-26 10:51:00) [44]
> Anatoly Podgoretsky © (25.11.09 16:57) [3]
я зациклилась с этой датой...:(((
не знаю какой параметр указать в validdate и в какой момент (или на какое событие?) вызывать эту процедуру
ADOQ1.FieldByName('date_document').Validate(); ?
И Как потом выйти на событие onValidate ?
Напишите пож-та поподробнее.
Anatoly Podgoretsky (2009-11-25 16:59:00) [45]> Анна (25.11.2009 16:49:00) [0]
И используй параметры
Anatoly Podgoretsky (2009-11-25 16:57:00) [46]> Анна (25.11.2009 16:49:00) [0]
Validate
Анна (2009-11-25 16:52:00) [47]Спасибо, завтра попробую утром. Отпишусь. Сейчас надо в сад за ребенком...
Сергей М. (2009-11-25 16:51:00) [48]TField.SetText