Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Настройка видимости столбцов запроса на клиенте [D2005, XP]


Страницы:   1 2

девушка ©   (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 бессмысленный.

не хочется именовать колонки по русски в делфи, но готова:
- создать словарь данных
- руками же его и заполнить
- добваить поддержку словаря в программе.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо