![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
неправильная дата [D6, Paradox]
GIL © (2003-11-06 12:01:00)
procedure TForm1.Main_TFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
var y,d,m,m1,d1,dd,mm,y1,yy:word;
dat,dat1:TDate;
begin
Accept:=False;
if not (Main_TBirth.Value = null) then
begin
decodedate(da,y,m,d);
decodedate(lda,y1,m1,d1);
decodedate(Main_TBirth.Value,yy,mm,dd);
dat:=encodedate(y1,mm,dd);
showmessage(datetostr(Main_TBirth.Value));
if (lda<=dat)and(dat<=da) then Accept:=True;
end;
end;
в таблице все тестовые значения - 29.10.1983
в сообщении появляется - 31.07.18533
и 30.12.15443 после появления PrintPreview от QuickReport"а
GIL (2003-11-06 14:09:00) [1]
ауу, кто-нибудь знает!! ответ на вопрос!!???
GIL (2003-11-06 13:45:00) [2]
>Anatoly Podgoretsky
ну не знаю, не знаю, у меня у всех типов поля кроме подстановочных все правильно читается, а когда делаю локать по айдишнику в род. таблице все работает!!
А как насчет трехразовой фильтрации?? с ней то что делать??
причем когда ее инициирует Квикрепорт, то она пробегает одну и туже запись два раза подряд, а не просто вызывает фильтр два раза
Anatoly Podgoretsky (2003-11-06 13:41:00) [3]
GIL © (06.11.03 13:21) [29]
обработчик OnFilterRecord работает даже с Папой Римским!!!
GIL (2003-11-06 13:34:00) [4]
TP (06.11.03 13:32) [32]
То, что OnCalcFields происходит до OnFilterRecord известно давно.
при чем здесь это? Если ты про "И всем всем всем, запомните набудущее что обработчик OnFilterRecord не работает в полями подстановки!!", то сам подумай что сказал
TP (2003-11-06 13:32:00) [5]
То, что OnCalcFields происходит до OnFilterRecord известно давно.
GIL (2003-11-06 13:27:00) [6]
ну не знаю я!!!, ну скажите кто знает!! Anatoly Podgoretsky наверняка знаешь!!! скажи!! pls
Mike Kouzmine (2003-11-06 13:25:00) [7]
GIL © (06.11.03 13:21) [29] Спасибо, запомним. А ты подумай и нам скажи, мы тоже это запомним.
GIL (2003-11-06 13:21:00) [8]
извините, просто ее долго писать, а при взгляде на нее возникнет много вопросов по степени оптимизации, все работает!!
И всем всем всем, запомните набудущее что обработчик OnFilterRecord не работает в полями подстановки!!!
всем большое спасибо за терпение и советы!!
но напоследок возник еще один вопрос, протрассировав прогу в дельфе увидел очень интересный момент: после того, как я вызываю PrintPreview у QuickReport прога еще 2 раза!! прогоняет фильтр!!, получается что я фильтрую таблицу 3 раза!! как этого избежать?
Mike Kouzmine (2003-11-06 13:18:00) [9]
Anatoly Podgoretsky © (06.11.03 13:16) [27] Грустно это.
Anatoly Podgoretsky (2003-11-06 13:16:00) [10]
Mike Kouzmine © (06.11.03 13:04) [24]
Не дождешься, по крайней мере ранее ни кому не удалось.
GIL (2003-11-06 13:14:00) [11]
ура, фильтр работает, но все равно выдает кучу ошибок
GIL (2003-11-06 13:10:00) [12]
кажется я начинаю догонять, он не может правильно взять данные из полей подстановок!!
Mike Kouzmine (2003-11-06 13:04:00) [13]
GIL © (06.11.03 13:02) [23] Ты дай структуру таблицы, а потом спрашивай.
GIL (2003-11-06 13:02:00) [14]
попробовал считывать другие поля - все считывается неверно!!! возникает вопрос: КАК ВЕРНОсчитать значения полей текущей записи в обработчике события OnFilterRecord?????
GIL (2003-11-06 12:56:00) [15]
я уже так сделал, на фика не в том, как выводить, а в том что ДАТАневерно считывается
Serg (2003-11-06 12:54:00) [16]
а не проще ли
showmessage(dataset.fieldbyname("birth").asstring); ?
GIL (2003-11-06 12:54:00) [17]
заместо
SetRangeStart;
Main_TID_Birth.Value:=i;
SetRangeEnd;
Main_TID_Birth.Value:=j;
ApplyRange;
поставил
Main_T.SetRange([i],[j]);
датасет престал быть пустым, но всеравно ругается на дату
Johnmen (2003-11-06 12:51:00) [18]
showmessage(FormatDateTime("dd.mm.yyyy",(dataset.fieldbyname("birth").asdatetime)));
GIL (2003-11-06 12:47:00) [19]
без разницы как писать, если дату из таблицы он берет неправильную.
Serg (2003-11-06 12:44:00) [20]
вместо такой констукции
if (lda<=dat)and(dat<=da) then Accept:=True else Accept:=False;
правильнее писать
Accept:=(lda<=dat)and(dat<=da);