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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2024, 17:07   #1
Filen
Новичок
Джуниор
 
Регистрация: 12.11.2024
Сообщений: 2
По умолчанию AdoQuery и фильтрация..

Уважаемые гуру , help my темному, 'я не волшебник я только учусь'..
Есть 2 таблицы в аксцесс ZapisPriemaData и AptekaProdaja связаные по полям idDat=:Id_Daty
Код:
DataModule2.ADOQueryApteka.Close;
DataModule2.ADOQueryApteka.Open;
DataModule2.ADOQueryApteka.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryApteka.SQL.Add('Select*From AptekaProdaga Where idDat=:Id_Daty');
DataModule2.ADOQueryApteka.Active:=true;
задача взять из ADOQueryApteka все записи в диапазоне дат d1-d2 и отфильтровать по полю NamePreparat (nP)
Код:
DataModule2.ADOQueryZapisData.Close;
DataModule2.ADOQueryApteka.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryApteka.SQL.Add('SELECT * FROM [AptekaProdaga] WHERE [DataProdagi] BETWEEN DateEdit1.Date and DateEdit2.Date ORDER BY NamPreparat ASC');
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit1.Date').Value :=DateEdit1.Date;  /// Ïàðàìåòð D1 ïî óìîë÷àíèþ
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit2.Date').Value := DateEdit2.Date;   /// Ïàðàìåòð D2 ïî óìîë÷àíèþ
DataModule2.ADOQueryApteka.Active:=true;
DataModule2.ADOQueryApteka.First;

DataModule2.ADOQueryApteka.Filtered:=false;
   DataModule2.ADOQueryApteka.Filter:='[NamPreparat] LIKE '+ '''%' + nP + '%' + '''';
       DataModule2.ADOQueryApteka.Filtered:=true;

ShowMessage('T1   '+IntTOStr(DataModule2.ADOQueryApteka.RecordCount));
Казалось бы все просто , но после попытки восстановить начальный запрос ADOQueryApteka, ошибка
Filter property cannot be used for detail tables, те таблица является зависимой от другой и фильтрация к ней не применима. Как то можно обойти сию проблему?
Filen вне форума Ответить с цитированием
Старый 12.11.2024, 22:37   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

самый простой способ
иметь больше разных запросов
и не писать их в коде программы, а записать их один раз в дизайнере.
1. adoqueryapteka
2. мастер-data для adoqueryapteka
3. независимый запрос для фильтрации
4. и т. д. и т. п.

если есть желание показывать их в одном месте по очереди,
просто менять свойство Dataset для соответсвущего datasource.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.11.2024 в 22:40.
evg_m на форуме Ответить с цитированием
Старый 13.11.2024, 00:24   #3
Filen
Новичок
Джуниор
 
Регистрация: 12.11.2024
Сообщений: 2
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
самый простой способ
иметь больше разных запросов
и не писать их в коде программы, а записать их один раз в дизайнере.
1. adoqueryapteka
2. мастер-data для adoqueryapteka
3. независимый запрос для фильтрации
4. и т. д. и т. п.

если есть желание показывать их в одном месте по очереди,
просто менять свойство Dataset для соответсвущего datasource.
Да где ж ты раньше был, спасиб тебе огроменное наставил на путь истинный. А я тут по серости своей танцы с бубнами устраиваю. Все работает как часы..
Filen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация по диапазону через ADOQuery Rusya15937 C/C++ Базы данных 20 17.06.2018 20:56
Фильтрация в ADOQuery Janger Общие вопросы Delphi 6 13.08.2015 11:59
Фильтрация AdoQuery по пустому значению a_n_n_a БД в Delphi 1 07.02.2012 08:43
Фильтрация ADOQuery Builder6 mirra88 C/C++ Базы данных 3 08.08.2011 06:58
Фильтрация в Adoquery с использованием or and ArtInt БД в Delphi 20 13.05.2009 21:24