Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



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


1-6989
John Kayfolom
2002-05-22 16:31
2002.06.03
Запуск DOS программы и получение ErrorLevel


8-7123
ilg
2002-01-14 14:17
2002.06.03
Как сделать Screenshot из видеоролика (TMediaPlayer)?


1-7024
Федина Лидия
2002-05-21 14:03
2002.06.03
инсталляция в InstallShield Express


4-7272
Eugene "Jek" Efimochkin
2002-03-26 23:34
2002.06.03
Иконки в SysTray




   Наверх