Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как без динамического сделать добавляемые пользователем критерии / 15 сообщений из 15, страница 1 из 1
16.04.2009, 09:08
    #35934965
Hey
Hey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
В системе должна иметься возможность пользователю добавлять набор критериев для фильтра. Например он может добавить критерий "Клиенты моложе 30 лет по которым принято положительное решение"
Этот критерий он потом сможет выбрать из списка критериев и должен получится запрос на подобие такого:

Код: plaintext
select * from Applications where dbo.ApplicantAge(ClientID) <  30  and Type = 'A'

Как следует сохранять такие критерии ?
...
Рейтинг: 0 / 0
16.04.2009, 11:48
    #35935507
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
heyВ системе должна иметься возможность пользователю добавлять набор критериев для фильтра. Например он может добавить критерий "Клиенты моложе 30 лет по которым принято положительное решение"
Этот критерий он потом сможет выбрать из списка критериев и должен получится запрос на подобие такого:

Код: plaintext
select * from Applications where dbo.ApplicantAge(ClientID) <  30  and Type = 'A'

Как следует сохранять такие критерии ?
что значит без динамического?
...
Рейтинг: 0 / 0
16.04.2009, 12:00
    #35935571
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
Nafчто значит без динамического?
Например у нас в Cache есть несколько вариантов использования sql-запроса... Например "статический" выглядит так:

Код: plaintext
&sql(SELECT ID FROM adm.Nast_Params WHERE  ID=:% 1  AND (%ID <> :%id OR :%id IS NULL))

А "динамический" так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
s sql="Select * From ver.Adhoc Order by Name"
s ors=##class(%ResultSet).%New("%DynamicQuery:SQL")
s ok=ors.Prepare(sql)
s ok=ors.Execute()
while ors.Next() {
	// любой код
}
d ors.Close()
k ors

В статическом можно менять только значения передаваемых переменных... А вот в динамическом можно формировать и сам текст sql-выражения...

Может нечто аналогичное и имелось ввиду.

hey , ты бы по подробнее написал про критерии... А то так пока только туману напустил...
...
Рейтинг: 0 / 0
17.04.2009, 04:03
    #35937590
Hey
Hey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
имеется ввиду динамический sql, в заголовке опечатка, сорри

Например, предположим есть таблица

Код: plaintext
table Applications (ID int, ClientName varchar( 100 ), Status char, Type char)

в общем случае таблиц может быть много.
Пользователю нужна возможность делать поиск по таблице, причем критерии поиска он может добавлять динамически.
Например он может захотеть ввести критерий "Все заявления от клиентов с именем Михаил и статусом Одобрено"
В коде этот критерий будет выглядеть как

Код: plaintext
select * from Applications where ClientName = 'Михаил' and Status = 'A'

Теперь у него должна быть возможность выбрать данный критерий из комбобокса и нажав ОК он должен получить результат. Кроме того, к критерию могут быть добавлены доп. условия, например диапазон дат.
...
Рейтинг: 0 / 0
17.04.2009, 08:22
    #35937629
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
hey , у нас это называется "поисковой системой". Пользователю в некоем диалоговом режиме предлогается создать некий, нужный ему запрос к БД... Его можно сохранить, изменять, настраивать выходную таблицу, печатать ее, записывать в файл.

Этот раздел про "Проектирование БД", каким боком это тут?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
17.04.2009, 08:34
    #35937643
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
hey,

мне так кажется, чтобы критерии менялись нужно стобы SQL или то, что вместо него было динамическим. Просто по определению: динамический - то, что можно изменить.
...
Рейтинг: 0 / 0
17.04.2009, 08:37
    #35937648
Hey
Hey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
А куда я этот вопрос еще постить-то должен )
Это не совсем генератор запросов к бд, пользователь о бд ни сном ни духом, ему будет предложено несколько вариантов параметров и операторов, из которых он составляет критерий.
Теперь все это надо как-то поумному сохранить в бд и потом использовать
...
Рейтинг: 0 / 0
17.04.2009, 08:40
    #35937655
Hey
Hey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
beluginhey,

мне так кажется, чтобы критерии менялись нужно стобы SQL или то, что вместо него было динамическим. Просто по определению: динамический - то, что можно изменить.
возможно,
просто это ведет к невозможности использования функций.
Может кто-то просто уже сталкивался с подобным
...
Рейтинг: 0 / 0
17.04.2009, 13:07
    #35938483
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
heyпросто это ведет к невозможности использования функций
Почему? "and getdate() between date1 and date2" что мешает родить? Или что имелось в виду?
...
Рейтинг: 0 / 0
17.04.2009, 15:26
    #35938957
Hey
Hey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
Сергей Васкецов
Почему? "and getdate() between date1 and date2" что мешает родить? Или что имелось в виду?
имелось в виду:

Код: plaintext
where ClientName = 'Михаил' and Status = 'A'

т.е. произвольный параметр и оператор (and, <, > , !=, =, итп)
...
Рейтинг: 0 / 0
17.04.2009, 15:29
    #35938974
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
heyимелось в виду
Все равно не понял, ибо все равно будет попадалово на "= NULL" при фильтрации. Минимальная логика все равно должна быть. Да и функций в Вашем примере не вижу. Можете нормальный пример привести?
...
Рейтинг: 0 / 0
17.04.2009, 17:51
    #35939453
Hey
Hey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
Сергей ВаскецовВсе равно не понял, ибо все равно будет попадалово на "= NULL" при фильтрации. Минимальная логика все равно должна быть. Да и функций в Вашем примере не вижу. Можете нормальный пример привести?
честно говоря непонятно, чем пример не угодил. Null в качестве значения будет отсутствовать, но вообще-то даже его не проблема добавить, если понадобится - вводим оператор is и все.

Функцию хотел использовать для получения фильрованных значений наподобие

Код: plaintext
1.
2.
select * from dbo.GetCriteriaFilteredValues(criteriaName) a
join ...
where date between date1 and date2

однако из-за динамического sql функции отпадают.

Но по-сути вопрос все-таки не столько про динамический sql, сколько вообще как к этому подходить, может кто сталкивался, что-бы велосипед не изобретать
...
Рейтинг: 0 / 0
19.04.2009, 12:08
    #35940821
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
Я сделал свой велосипед на такую же тему.

Выражение WHERE хранится в виде дерева с узлами AND OR. Конечные листочки - фукции с операндами. Из этого генерится длинный WHERE который потом используется в программе.

Создается и редактируется сия конструкция в виде дерева с драг энд дроппом узлов и частей из одного места дерева в другое.

Новые функции можно добавлять ран тайм, для каждой задается число операндов и шаблон для отображения ее в SQL.
...
Рейтинг: 0 / 0
20.04.2009, 08:25
    #35941301
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
П-Л , это я и называл "поисковой ситемой"...
...
Рейтинг: 0 / 0
20.04.2009, 21:08
    #35942942
Stas Tristan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как без динамического сделать добавляемые пользователем критерии
По этой теме есть продукты сторонних разработчиков:
Easy Query http://devtools.korzh.com/eq/
FilterControl From DevExpress
Это чтоб не париться с разработкой собственного решения - там уже все за вас решили
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как без динамического сделать добавляемые пользователем критерии / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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