Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Фильтрация IBDATASET


Автор: ishimcity 30.4.2009, 06:18
Ребята подскажите что я делаю не так, перечитал весь форум пробвал разные способы но эфект нулевой.
есть в DBGRID колонка с датами например

20.01.2009
22.01.2009
2.02.2009
27.03.2009

делаю так

Код

procedure TForm3.IBDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
IBDataSet1.Filtered :=true;
Accept:=(DataSet.FieldByName('MY_POLE_DATE').AsString  = '27.03.2009' ); // хочу чтоб вывело только на эту дату
end;


а толку нет всеравно выводит полный список дат smile 

или так хотя принцип тотже

Код

if   DataSet['rbdatepay'] = '27.03.2009' then
 Accept :=true;


И тоже нечего 
как быть?
Использовать SQL нежелательно бы

Автор: insoft 30.4.2009, 06:46
Цитата(ishimcity @  30.4.2009,  06:18 Найти цитируемый пост)
Использовать SQL нежелательно бы

мдя, использовать БД и не использовать SQL... жесть
Цитата(ishimcity @  30.4.2009,  06:18 Найти цитируемый пост)
(DataSet.FieldByName('MY_POLE_DATE').AsString  = '27.03.2009

у тебя поле даты имеет текстовый вид? smile 
переправляй структуру БД!!! даже не думай дальше что то делать

Автор: ishimcity 30.4.2009, 07:33
insoft

Упс точно он DATE
Вот дурилка. smile 

хорошо.

тогда я делаю так

Код

var
t:TDateTime;
....
....
begin
t:=ibdateset1.ParamByName ('rbdatepay').AsDate ; // хочу получить  из поля rbdatepay дату


начинает ругаться что нет такого поля?! это как понимать его?

или как можно подругому смастерить?

Автор: insoft 30.4.2009, 08:02
Цитата(ishimcity @  30.4.2009,  07:33 Найти цитируемый пост)
t:=ibdateset1.ParamByName ('rbdatepay').AsDate

Код

t:=ibdateset1.FieldByName ('rbdatepay').AsDate

найди отличия ;)

Автор: Deniz 30.4.2009, 08:09
Так надо не ParamByName а FieldByName

Автор: insoft 30.4.2009, 08:22
Deniz, мдя, урока для ishimcity опять не вышло :(

Автор: ishimcity 30.4.2009, 08:28
делаю так

Код

var
Z:TDateTime;

z := strtodate(dbedit7.Text ); // dbedit7.Text - здесь есть моя дата по которой ТОЛЬКО нужно вывести мои данные
Accept:=(DataSet.FieldByName('rbdatepay').AsDateTime < z); // если все даты меньше моей  , то вывести только данные на мою дату 
IBdateSet1.Filtered :=true;


Опять без результатно
Ребят не ругайтесь я правдо стараюсь все запомнить  ))))) просто столько информации в раз много всего интересного

Автор: insoft 30.4.2009, 08:36
ishimcity, Вот прям сейчас, найди любую книжку по delphi и посмотри как строиться запрос IBTable.Filter.... чуть больше времени уйдёт но зато разберёшься и таких вопросов уже не возникнет

Автор: ishimcity 30.4.2009, 10:33
Нашел. почитал. попробвал пример http://base.vingrad.ru/view/2124-Sobyitie-OnFilterRecord
А толку то нет....все напьюсь щас
 smile 

Автор: Данкинг 30.4.2009, 10:44
Запросики юзаем, товарищи, запросики... smile 

Автор: insoft 30.4.2009, 10:46
Цитата(ishimcity @  30.4.2009,  06:18 Найти цитируемый пост)
Использовать SQL нежелательно бы

ishimcity, я одно не пойму, а почему при использовании тобой IBDataSet, SQL использовать нельзя?

Автор: ishimcity 30.4.2009, 10:56
insoft Понимаешь дружище система у меня такая, есть главная форма где выводит все данные есть форма для запроса номера абонента, и вот когда ввожу номер идет запрос на вывод данных с запрошеным номером, если подскажешь как прикрутить SQL запрос буду рад, а так уже в голову ниидет никак. мне фильтрация нужна в автоматическом режиме тоесть при выводе данных есть данные на разные даты а мне нужно на последнее ,вот когда я по номеру вывожу на главную форму я только тогда получаю последнюю дату.
Походу я тебя загрузил своей проблемой ))))))))

Автор: insoft 30.4.2009, 11:05
дык в кверик который выводит НД на главной форме, вставь запрос на выбор по абоненту и переоткрой датасет..
или используй другой кверик, datasource которого привязан к тому же гриду..

Автор: Staruha 30.4.2009, 11:05
Не пей козленочком станешь smile.Попробуй так

IBDataSet1.Filter := 'MY_POLE_DATE=27.03.2009' 
или
IBDataSet1.Filter := 'MY_POLE_DATE='+Date(27.03.2009)

Автор: ishimcity 1.5.2009, 16:32
Сам непонял пересобрал свою прогу и все заработало

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)