Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];

Вниз

Фильтрация   Найти похожие ветки 

 
Miss   (2002-11-10 08:23) [0]

Пусть имеется поле типа DateTime, через TTable необходимо отфильтровать только по году


 
iNew   (2002-11-10 08:26) [1]

Table1.SetRange


 
Miss   (2002-11-10 08:39) [2]

Это понятно, и др. методы имеются... Но вопрос в другом-
запись в поле имеет вид 10.10.1980 образец поиска 1980


 
Vladislav   (2002-11-10 09:18) [3]

попробуй сделать фильтр Field >= 1.01.1980 and Field <= 31.12.1980


 
Miss   (2002-11-10 13:32) [4]

Есть ли еще варианты?


 
Anatoly Podgoretsky   (2002-11-10 13:44) [5]

Чем эти плохи, вариант с SetRange работает быстрее, чем фильтр, но требует активного индекса по полю. Фильтру же индексы не требуются.
Если образец "поиска" (смущает это понятие в применении к фильтру), то построение фильтра оченб простое, с учетом, что локализация совпадает, то

Table.Filter := "Field>="+QuotedStr("1.01." + StrToInt(Year)) + " and Field<="+QuotedStr("31.12." + StrToInt(Year));


 
MsGuns   (2002-11-10 14:00) [6]

Событие OnFiltered


 
Miss   (2002-11-10 15:43) [7]

Дело не в выборе SetRange или OnFiltered.
Здесь под образцом поиска имеется в виду то что пользователь ввел, например, в Edit. Хотя конечно сказать "образец поиска" будет не совсем верно, но что ж сори за некорректную формулировку.
Да, при компоновке даты из строки компилятор ругается -"1.01.1968" не дата. Если разделитель / тоже самое происходит.
Вот и возник вопрос может это можно проще реализовать.


 
Anatoly Podgoretsky   (2002-11-10 15:55) [8]

Ну так привели как ты Edit превращаешь в фильтр


 
Miss   (2002-11-10 16:11) [9]

>Anatoly Podgoretsky ©
Подробнее о QuotedStr можно?


 
Anatoly Podgoretsky   (2002-11-10 16:14) [10]

Оно правильно раставляет кавычки, лучше это использовать, чек конструкции типа """+IntToStr()+"""


 
Miss   (2002-11-10 16:19) [11]

>Anatoly Podgoretsky © (10.11.02 15:55)
>Ну так привели как ты Edit превращаешь в фильтр
В этом то и проблема



 
Anatoly Podgoretsky   (2002-11-10 16:29) [12]

Тогда с маленикими модификациями то что я привел выше
Table.Filter := "Field>=" + QuotedStr("1.01." + Edit1.Text) + " and Field<="+QuotedStr("31.12." + Edit1.Text);


 
Miss   (2002-11-10 16:33) [13]

>Anatoly Podgoretsky © (10.11.02 15:55)
>Ну так привели как ты Edit превращаешь в фильтр
StrToDate("1.01."+ed.Text)


 
Anatoly Podgoretsky   (2002-11-10 16:34) [14]

.Filter имеет тип строковый, не надо превращать в дату


 
Miss   (2002-11-10 16:59) [15]

Так не фильтр превращаю в дату. Поле имеет тип дата, поэтому Edit надо превратить в дату, дату ведь можно сравнить лишь с датой.


 
Anatoly Podgoretsky   (2002-11-10 17:05) [16]

Не надо, выражения фильтра это строка


 
Miss   (2002-11-10 17:10) [17]

Например
DM.tMain.Filter:="DATR>="+StrToDate("1.01."+ed.Text)";
Поле DATR типа ДАТА


 
Anatoly Podgoretsky   (2002-11-10 17:28) [18]

Ну сколько можно говорить, не надо преобразовывать в TDate - выражение фильтра СТРОКОВОГО типа. Я же привел в Anatoly Podgoretsky © (10.11.02 16:29) точный синтаксис для построения фильтра по году.


 
Miss   (2002-11-10 17:30) [19]

>Anatoly Podgoretsky © (10.11.02 16:29)
>Тогда с маленикими модификациями то что я привел выше
>Table.Filter := "Field>=" + QuotedStr("1.01." + Edit1.Text) + " >and Field<="+QuotedStr("31.12." + Edit1.Text);

Спасибо, с моими маленькими модификациями это работает!!:)))


 
Anatoly Podgoretsky   (2002-11-10 17:50) [20]

" > and Field<=" это не должно работать


 
Miss   (2002-11-11 06:32) [21]

Я же сказала исправить пиршлось:))


 
Miss   (2002-11-11 06:32) [22]

Я же сказала исправить пришлось:))


 
Miss   (2002-11-11 07:13) [23]

Пусть имеется поле типа DateTime, через TTable необходимо НАЙТИ только по году



 
iNew   (2002-11-11 07:41) [24]

Table1.IndexName:="indexfield";
Table1.SetRange([StrToDate(01.01.98)],[StrToDate(31.12.98)]);


 
pasha676   (2002-11-11 08:58) [25]

2Miss
А почему бы не перейти на SQL. Это поудобней будет и поуниверсальней.


 
Miss   (2002-11-11 09:20) [26]


> 2Miss
> А почему бы не перейти на SQL. Это поудобней будет и поуниверсальней.

А зачем это для локальной базы?


 
А_2   (2002-11-11 09:57) [27]

Вы спорите , даже не понимаете о чем !!!
Все работает от

DataModule1.Table3.SetKey;
DataModule1.Table3.FieldByName("FAM").AsString := Edit1.Text;
DataModule1.Table3.GotoNearest;
Просто пример. Вместо «FAM» любой тип данных может быть.


 
Miss   (2002-11-11 10:15) [28]


> iNew (11.11.02 07:41)
> Table1.IndexName:="indexfield";
> Table1.SetRange([StrToDate(01.01.98)],[StrToDate(31.12.98)]);

Это все конечно работает, но это фильтрация а нужен поиск.


 
Miss   (2002-11-11 10:41) [29]


> А_2 (11.11.02 09:57)
> Вы спорите , даже не понимаете о чем !!!
> Все работает от
>
> DataModule1.Table3.SetKey;
> DataModule1.Table3.FieldByName("FAM").AsString := Edit1.Text;
> DataModule1.Table3.GotoNearest;
> Просто пример. Вместо «FAM» любой тип данных может быть.

Можно уточнить, зачем в поле присваивать значение Edit"а


 
Miss   (2002-11-11 11:09) [30]


> Можно уточнить, зачем в поле присваивать значение Edit"а
>

Беру свои слова обратно:))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.008 c
14-93222
Сатир
2002-11-10 16:11
2002.11.28
Именинники 10 ноября


3-92862
e-mike
2002-11-10 01:54
2002.11.28
Двойные кавычки в запросе


1-92983
BOBAH
2002-11-18 12:50
2002.11.28
Работа с ресурсами!


1-93092
ЖЕНЕК
2002-11-16 22:54
2002.11.28
Звиняйте конечно....


1-93109
Mafsha
2002-11-17 16:35
2002.11.28
Как перевести время в секунды?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский