Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.03;
Скачать: CL | DM;

Вниз

Как лучше организовать структуру хранения WHERE?   Найти похожие ветки 

 
Aleksandr ©   (2002-05-21 15:15) [0]

Стряпаю я компоненту, которая, будучи привязанной к TabSet, хранит набор запросов (динамически меняемых) к TQuery, начиная со списков полей, их названий, ширин, видимости и кончая условиями. Только вот никак не могу сообразить, как организаовать класс для хранения Where. Если бы условия были просты, типа ID=10 OR Name="AAA", тут все понятно, тут и строкой хватило бы, даже учитывая, что эту строку потом надо на диалоги разбивать... Но условия, сами понимаете, могут быть и вложенными, типа ID=10 AND Type=24 OR (ID=20 AND Name LIKE "AAA%"). Напрашивается вариант такого класса:
TFilterValue=class
FieldName : string;
FieldValues : TList; ...
end;
TFilter = class
Values : TFieldValuesList; //List of TFieldValue
CompareTypes : TCompareTypesList; //List of "OR", "AND"
Filters : TFilter; ...
end;

в смысле, список фильтров может содержать как единичное значение, так и список фильтров, но вот только выглядит как-то все это топорно... Может, можно чего попроще (то есть поумнее) организовать?


 
Внук ©   (2002-05-21 15:49) [1]

Могу предложить такую идею (правда, в более широкой постановке): когда нам понадобилось динамически управлять запросами, писать собственный лексический анализатор было, мягко говоря, неразумно. Поэтому пошли более эффективным,как мне кажется, путем: на основе диаграммы Вирта SQL-запроса типа SELECT, специфической именно для данного типа БД, был создан компонент, а, проще говоря, список структур и коллекций, реализующий эту диаграмму. В Вашем случае достаточно использовать часть этой диаграммы от слова WHERE и дальше, учитывая специфику используемой СУБД.



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

Текущий архив: 2002.06.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
8-7135
Vvedensk
2002-01-03 12:43
2002.06.03
Как проиграть mp3 в Delphi 6?


3-6899
ng
2002-05-08 09:15
2002.06.03
Помогите чей с гридом, второй день мучаюсь


1-6973
ArmArt
2002-05-22 21:08
2002.06.03
Помогите округлить число... Например вот такое..


14-7169
blackweber
2002-04-23 21:25
2002.06.03
Раз все предлагают задачи, попробую и я.


7-7234
ATLANTIDO
2002-03-07 00:21
2002.06.03
SHELDA