TTable.Filter
5 отговора
346 прегледа
TTable.Filter
Здравейте.
Може ли да помогнете, имам следния въпрос.
Правя елементарна програма в която има няколко таблици на Пардокс.
В тях пък има полета от тип Date и няколко полета от тип Time..
Филтрирам по дата използвайки tblCounters.Filter..- работи, но
Филтрирането по час :
tblCounters.Filter:='cutOperTime='+QuotedStr('16:14:47')
ми дава празна таблица въпреки, че има записи с такива стойност в полето. Опитах същото в QBE. Там резултатът е същия.
Ако сменя знака така -
tblCounters.Filter:='cutOperTime>' + QuotedStr('16:14:47')
филтъра работи.
Вероятно участват и милисекундите.. не съм сигурен и май не мога да се оправя. Давайте съвети .. Опитвах доста варианти..различно формтиране и тнт, но нямам представа защто е така.
Благодря ви.
Мишо
Може ли да помогнете, имам следния въпрос.
Правя елементарна програма в която има няколко таблици на Пардокс.
В тях пък има полета от тип Date и няколко полета от тип Time..
Филтрирам по дата използвайки tblCounters.Filter..- работи, но
Филтрирането по час :
tblCounters.Filter:='cutOperTime='+QuotedStr('16:14:47')
ми дава празна таблица въпреки, че има записи с такива стойност в полето. Опитах същото в QBE. Там резултатът е същия.
Ако сменя знака така -
tblCounters.Filter:='cutOperTime>' + QuotedStr('16:14:47')
филтъра работи.
Вероятно участват и милисекундите.. не съм сигурен и май не мога да се оправя. Давайте съвети .. Опитвах доста варианти..различно формтиране и тнт, но нямам представа защто е така.
Благодря ви.
Мишо
Re: TTable.Filter
На прав път си - датите се представят като double - което е реално число - за това по добре работи със филтър който обхваща период - >= Д1 и <= до Д2 а не директно като = Д. Друг вариант е да си направиш собствено целочислено представяне на времето- и да прекодираш данните - ама е тъпо и по-бавно.
---

---
Фантома пише, че е по-бавно: разбирай разработката
Щото всеико останало е по-ефектиено, но се разработва бавно.
Аз работя по този начин и го считам за оптимален. Обикновенно в GetText на филдовете прекодирам.
А разработката е по-бавна, докато си направиш процедурите, по-нататък е същото :)
Аз работя по този начин и го считам за оптимален. Обикновенно в GetText на филдовете прекодирам.
А разработката е по-бавна, докато си направиш процедурите, по-нататък е същото :)
Re: TTable.Filter
Ех, това е било наистина.
Хитро и простично решение.
Благодаря ти!
А, аз бях тръгнал да се ровя с IncMilliSecond и MilliSecondOf...
Хитро и простично решение.
Благодаря ти!
А, аз бях тръгнал да се ровя с IncMilliSecond и MilliSecondOf...
Re: Фантома пише, че е по-бавно: разбирай разработката
Я обясни как става тая работа с GetText на филдовете и прекодирането.
AJ™
AJ™
Може и да не е точно прекодиране :)
Ами ако си помня в полето секунди, а искам в грида (или където се извежда текста) да ми излиза DDD,HH:MM:SS (напр. дни, часове и секунди), в обработяика на събитието GetText на филда си правя сметките:
(Примерът е първият ми попаднал - не е дата/час - може да се проверява за валидност :))
{}procedure TForm_JrnMySQL_1.GetText_LvIDrRazh(Sender: TField; var Text: String; DisplayText: Boolean);
begin
Text := FloatToStrF(0.1*Sender.AsInteger,ffFixed,20,1)+' %';
end;
(Примерът е първият ми попаднал - не е дата/час - може да се проверява за валидност :))