![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Настройка видимости столбцов запроса на клиенте [D2005, XP]
девушка © (2009-01-16 14:07:00)Добрый день!
При выведении пользователю данных в табличном виде удобно иметь (или очень хочется) следующие возможности:
1. хранить русскоязычные названия полей в БД, чтобы не именовать все в приложении в вручную.
2. создавать эти самые колонки таблицы(TDBGrid) динамически, т.е. знать список и свойства полей формируемого запроса.
3. давать возможность пользователю скрывать/показывать столбцы и сохранить эти настройки в БД.
4. давать возможность пользователю накладывать на запрос определенные (программистом :) ) условия - типа поиска по подстроке и т.д.
Возможностей реализовать это много.
п. 4 можно реализовать а) введением в запрос параметра б) динамическим формированием запроса (б1 - на клиенте, б2 - на сервере)
п.1,2,3 требуют, ИМХО, как минимум, создания в БД таблиы, которая хранит информацию о полях запроса и таблицы с пользовательскими настройками полей.
На данный момент есть следующий вариант решения:
В БД есть таблица с описанием полей запросов (_SQL_FIELDS). Таблица, хранящая пользовательские настройки (_USER_SQL_FIELDS) видимости и колонок таблицы.
Программа формирует SQL запрос, который забирает из БД все поля запроса, а потом, в зависимости от их видимости в _USER_SQL_FIELDS, создаются соответствующие колонки в DBGrid.
Условия на запрос налагаются так:на сервере есть ХП, которая принимает ряд параметров и (в зависимости от назначения запроса) выбирает (case) нужный запрос и подставляет в него параметры.
Описаный метод имеет очевидный недостаток - клиенту передается много не используемых данных.
----
Сразу бы хотелось сказать про выбранный метод формирирования условий запроса.
Динамический SQL я пока отвергаю из-за сложности тестирования, невозможности передавать параметры (?) и необходимости изменять систему прав.
Формирование запроса на клиенте при наличии таблицы списка условий на запрос и частей from и where - вполне работоспособный вариант и туда тоже можно подставлять параметры - но его пока отложила, поскольку понравилось делать выборку с помощью ХП (можно передать параметры, а внутри ХП разрулить правильные они или нет и т.д.).
Впринципе, хотелось бы для выборок данных использовать вызовы ХП.
Как лучше решать такие проблемы?
БД: MS SQL 2005.
девушка (2009-01-16 14:19:00) [21]
> не хочется именовать колонки по русски в делфи, но готова:
готова к этому более чем к перекомпилящии программы ради смены названия колонок
Медвежонок Пятачок (2009-01-16 14:19:00) [22]а кэпшоны колонок грида.
Я про капшены и говорю
Медвежонок Пятачок (2009-01-16 14:18:00) [23]п. 4 уже реализован а ЕхЛибе, причем легко и изящно в отличие от вышеприведенных соображений
девушка (2009-01-16 14:18:00) [24]
> п.1 бессмысленный.
>
> не хочется именовать колонки по русски в делфи, но готова:
>
> - создать словарь данных
> - руками же его и заполнить
> - добваить поддержку словаря в программе.
Извините, не правильно сформулировала - имелись ввиду не рускоязычные названия полей БД, а кэпшоны колонок грида.
Медвежонок Пятачок (2009-01-16 14:15:00) [25]п.1 бессмысленный.
не хочется именовать колонки по русски в делфи, но готова:
- создать словарь данных
- руками же его и заполнить
- добваить поддержку словаря в программе.