Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 15:07   #1
Savin
Новичок
Джуниор
 
Регистрация: 10.06.2010
Сообщений: 1
По умолчанию Фильтрация данных

Здравствуйте !
Подскажите как сделать фильтрацию с помощью свойства "Filter" ADOTable, по полям: "Kod" - формат integer, "data" - формат date.
По полю "Data" нужно фильтровать только по году, без учета дней и месяцев. Год задается с помощью "ComboBox" в формате integer.
Я использовал строки для фильтра:
Код:
   Form1.ADOTable2.Filtered:=False;
   Form1.ADOTable2.Filter:='(kod = ''' + IntToStr(kodfam) + ''') and (' + copy(DateToStr(Form1.ADOTable2priem.Value),7,4) +' = ' + Form1.ComboBox2.Text + ')';
   Form1.ADOTable2.Filtered:=True;
Программа выдает сообщение о не соответствии данных или не правильном формате данных.

Последний раз редактировалось Stilet; 10.06.2010 в 15:51.
Savin вне форума Ответить с цитированием
Старый 10.06.2010, 16:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
DateToStr
Она не дает правильное преобразование. Пользуй FormatDateTime где укажешь нужный формат даты в твоей базе

Вообще ты совсем неверно запрос поставил тебе в фильтр нужно что-то типа
and(YEAR(Date)='+ComboBox1.Text+')' ;
I'm learning to live...

Последний раз редактировалось Stilet; 10.06.2010 в 16:22.
Stilet вне форума Ответить с цитированием
Старый 10.06.2010, 16:40   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
and(YEAR(Date)='+ComboBox1.Text+')' ;
так в фильтре по моему нельзя, там только логические операции, сравнение, и арифметические можно.

так
Цитата:
and (' + copy(DateToStr(Form1.ADOTable2priem .Value),7,4) +' = ' + Form1.ComboBox2.Text + ')';
смысла нет
Значение текущей строки при фильтрации можно только в onFilterrecord использовать,
а тут какоето извращение типа этого подойдёт

Код:
' priem >= 01.01.'+Form1.ComboBox2.Text +' and priem < 01.01.'+inttostr(StrToInt(Form1.ComboBox2.Text)+1)
может проще можно, подумать надо. Это на счёт даты.

На счёт числового поля, кавычки это лишнее надо просто

Код:
'(kod =' + IntToStr(kodfam)+')'
,

тоесть вместе
Код:
Form1.ADOTable2.Filter:='(kod = ' + IntToStr(kodfam) + ') and ( priem >= 01.01.'+Form1.ComboBox2.Text +' and priem < 01.01.'+inttostr(StrToInt(Form1.ComboBox2.Text)+1)+ ')';

Последний раз редактировалось vovk; 10.06.2010 в 16:43.
vovk вне форума Ответить с цитированием
Старый 10.06.2010, 18:17   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

В своих программах я делаю так:
Код:
fltCity:='([Город]='+''''+CityListBoxInp.Items[Citycnt]+''''+')'; 
fltSpc:='([Область специализации]='+''''+
                                SpcListBoxInp.Items[Spccnt]+''''+')';
fltSlg:='([Уровень сложности]='+''''+
                                            SlgName[Slgcnt]+''''+')';
fltKda:='([Шифр анкеты]='+''''+
                                KdaListBoxInp.Items[Kdacnt]+''''+')';
stFilter:=fltKda+' and '+fltSpc+' and '+fltSlg+
                                                     ' and '+fltCity;
ADOTableDatas.Filtered:=false;
ADOTableDatas.Filter:=stFilter;
ADOTableDatas.Filtered:=true;
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация данных в DBLookupComboBox NARKOM БД в Delphi 2 01.06.2010 16:15
Фильтрация данных skiffter Помощь студентам 10 17.11.2009 16:44
фильтрация данных elen1khp БД в Delphi 6 28.09.2009 20:01
Фильтрация данных Gladiator БД в Delphi 4 23.05.2009 12:37
Фильтрация данных в delphi7 @Akulina21 Компоненты Delphi 1 31.03.2009 16:30