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

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

Событие в DBGrid или в DataSet ??


Страницы:   1 2 3

Анна ©   (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


Страницы:   1 2 3

Наверх

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