Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];

Вниз

Как лучше организовать структуру хранения 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.008 c
1-6956
ymin
2002-05-22 16:45
2002.06.03
Почему по команде form1.print ни один combobox не печатается?


8-7129
ciloit
2002-01-12 16:37
2002.06.03
Файл BMP


1-7084
ymin
2002-05-22 09:35
2002.06.03
Господа мастера.


8-7113
Andr
2001-12-28 14:46
2002.06.03
Графические движки


7-7235
oblom
2002-03-05 15:08
2002.06.03
задание в универе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский