powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтр по дате
15 сообщений из 15, страница 1 из 1
Фильтр по дате
    #32086549
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello

Опять я и опять тривиальный вопрос...
Уж поверьте что попытак его решения было предпринято не мало...НО...

Хочется осуществить фильтрацию по полю даты (Date_nper), работаю ч/з Query (QAсс) ,база Paradox. Для этих целей воткнул два компонента ComboBox (ComboBox2) со списком годов для филитрации и CheckBox (CBFiltr) для вкл.выкл фильтрации.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TFrmOsn.CBFiltrClick(Sender: TObject);
begin
   if CBFiltr.Checked then
    QAcc.Filtered :=True
   else
    QAcc.Filtered :=False
end;

procedure TFrmOsn.ComboBox2Change(Sender: TObject);
begin
  QAcc.Filter := (Date_nper >= '01.01.'''+ComboBox2.Text+'''') 
and (Date_nper <= '31.12.'''+ComboBox2.Text+'''');
end;


Для Вас данная проблема решена уже давно. Подскажите пожалуйста.
Пните в нужном направлении.
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086552
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формат даты для парадокса - mm/dd/yyyy
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086556
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Cat2

Тут дело не в этом я уже их всяко перекручивал в том числе и (mm/dd/yyyy)меня больше ('01.01.'''+ComboBox2.Text+'''') беспокоит. Вообще дата такого вида прокатить может??
Может что то ещё придумать можно подскажи??!!...
Please...
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086560
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дата такого вида не прокатит
==============

Я бы сделал так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TFrmOsn.ComboBox2Change(Sender: TObject);
begin

if  QAcc.Filtered then
 QAcc.Filtered :=False;

QAcc.Filter := 
'Date_nper >= '+QuotedStr('01/01/'+ComboBox2.Text)+
' and Date_nper <= '+QuotedStr('12/31/'+ComboBox2.Text);

if CBFiltr.Checked then
 QAcc.Filtered :=True;

QAcc.First;

end;
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086586
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2

Т.е. ты предлогаешь только один компонент использовать ComboBox. Но тоды как пользователь все переоды оплаты просмотреть сможет?... допустим 2002-2003 г.

И что то таким образом дата тоже не пролазит говорит: is not a valid date
т.к. с функцией QuotedStr не знаком с кавычками не понятки.. Я думал она в таком виде не пройдет компил. Она пролезла но когда в ComboBox дату менять пытаюсь ругается.

Ладно пойду изучать Hellpы по QuotedStr....

Thank for a kicking in necessary is directed
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086597
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК Cat2

Всё победил блогодоря тебе конечно...
работает вот в таком виде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TFrmOsn.CBFiltrClick(Sender: TObject);
begin
   if CBFiltr.Checked then
    QAcc.Filtered :=True
   else
    QAcc.Filtered :=False
end;

procedure TFrmOsn.ComboBox2Change(Sender: TObject);
begin
QAcc.Filter :=
'Date_nper >= '+QuotedStr('01.01.'+ComboBox2.Text)+
'and Date_nper <= '+QuotedStr('31.12.'+ComboBox2.Text);
end;

Пойду кофейку дерну
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086815
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так не пробывал
procedure TFrmOsn.CBFiltrClick(Sender: TObject);
begin
if CBFiltr.Checked then
QAcc.Filtered :=True
else
QAcc.Filtered :=False
end;

procedure TFrmOsn.ComboBox2Change(Sender: TObject);
begin
QAcc.Filter := (Date_nper >= '''01.01.'+ComboBox2.Text+''')
and (Date_nper <= '''31.12.'+ComboBox2.Text+''');
end;

Обрати внимание на '
помоему дата в фильте должна выглядить так Date_nper >= '01.01.2003'
или так Date_nper >= "01.01.2003"
а у тя получилось Date_nper >= 01.01.'2003'

Может,я и не прав, за раннее прошу прощения. попробуй компьютер,как и бумага, выдержит все.
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086858
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voha

Какраз нет. Должет тебя огорчить твой вариант был опробован ранее и к сожалению не прошел...
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086867
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
balbes, Voha >
Самая главная ошибка у обоих - выражение фильтра является СТРОКОВОЙ КОНСТАНТОЙ.

Кстати. Если внутри строки должна содержаться 'закавыченная' подстрока, то не рекомендую использовать удвоение кавычки. Очень легко запутаться.
Лучше использовать QuotedStr, а в случае, если подстрока вводится переменной внутри которой может оказаться одинарная кавычка, то AnsyQuotedStr.

==============
balbes>
Один компонент ComboBox взят из твоего примера.
Разумеется, лучше использовать два комбобокса. Но учти, рано или поздно кого-то из пользователей посетит светлая мысль: "А можно мне посмотреть данные за полгода?" Поэтому сразу делай четыре.
...
Рейтинг: 0 / 0
Фильтр по дате
    #32086940
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2

ОК thank you за ценные сведения...
...
Рейтинг: 0 / 0
Фильтр по дате
    #32087025
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку Cat2

Мне нужно запрос 1 в нескольких местах выполнить. При заргузке программы, при изменении данных в даблице, и при вводе дат периода. Что можно придумать что бы один и тот же код в трёх местах не дублировать?
Я понимаю что какая то команда типа GoTo но Hellp почитал разобраться не могу собственными силами.
...
Рейтинг: 0 / 0
Фильтр по дате
    #32087036
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем тебе процедуры c параметрами не нравятся?
...
Рейтинг: 0 / 0
Фильтр по дате
    #32087042
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2

Будь любезен объясни....
лучше с примером если не затруднит.
...
Рейтинг: 0 / 0
Фильтр по дате
    #32087053
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во избежании недоразумений.
Я имел в виду дельфовские процедуры, а не хранимые процедуры SQL-серверов.
==========

Так ведь процедуры и придуманы, что бы код не повторять

Оберни запрос в процедуру - и действуй.

Допустим, при загрузке тебе надо выполнить запрос

select список where
Param1=что-то
and date>= когда-то1
and date<= когда-то2


procedure mySelect(что-то,когда-то1,когда-то2:string)
begin
DataSource.enabled:=false; //разрывается связь с гридом
ADODataSet.close;
ADODataSet.CommandText:='select список where ' +
' Param1='+что-то+
' and date>='+ QoutedStr(когда-то1)+
' and date<='+ QoutedStr(когда-то2)
//Можно и через параметры, но я предпочитаю собирать строку
ADODataSet.Open;
DataSource.enabled:=true;
end

Эта же процедура выполняется при изменеии параметров отбора во всех других случаях.

Или я не понял вопроса?
...
Рейтинг: 0 / 0
Фильтр по дате
    #32087062
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2

Не совсемь то.. т.к. уменя есть запрос для выведения статистики базы, так сказать что бы наши продвинутые Шефы могли в интерактивном режиме наблюдать за пополнением базы (т.е. за активностью работы пользователей). Запрос следующий
Код: plaintext
1.
2.
3.
4.
5.
  QStat.SQL.Clear;
  QStat.SQL.Add('select Count(akt_id),sum(sum_akt) from Akt');
  QStat.Open;
  Label44.Caption := QStat.Fields[ 0 ].AsString;
  Label45.Caption := QStat.Fields[ 1 ].AsString;
  QStat.Close;

в Label44 & Label45 - вывожу сведения, естественно для того что бы они регулярно обновлялись воткнул этот запрос в BeforePost соответствующей таблицы которая обновляется (от куда данные запрашиваются). При загрузке программы получается пока таблица не обновится данные не появяться, значит опять тот же запрос надо засунуть куда нибуть в CreateForm, далее ещё ньюан нужно выбрать этиже данные но за определенный период, получается опять тот же запрос но уже на OnClick по DateTime вот такая ситуация....
Код я не весь привел толь часть там дальше в разрезе дат и т.п.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтр по дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]