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

Вниз

DBgrid - подходы к сохранению настроек грида   Найти похожие ветки 

 
kserg@ukr.net   (2002-04-08 19:08) [0]

Народ, кто решал подобную задачу с DBgrid-om:
с одной стороны надо юзеру дать свободу в настройке грида (порядок колонок, их ширина, скрыть/отобразить колонку),
а с др. стороны - требование нач-ва, чтобы любому юзеру можно было ограничить доступ к инфо в БД.
Я решаю след.образом - создал служеб.таблицу, в котр. каждому юзеру прописаны права на просмотр полей. Соот-но, если к полю нет доступа, то при загрузке приложения в DBgrid-e эти колонки
делаю невидимыми.
Настройки DBgrid-а сохраняю/загружаю через DBgrid.SaveToFile/ LoadFromFile.
Всё было классно, пока однажды нач-к решил добавить одному юзеру правов на просмотр полей. Но в настройках грида эти поля были невидимыми, и юзер так и не смог их открыть...

Народ,пожалуйста подскажите красивое решение, а то уже мозги "пухнут".


 
Yuvich   (2002-04-08 20:22) [1]

Решение правильное, но надо сделать интерфейс к твоей служебной таблице чтобы менять права на просмотр полей каждым пользователем.


 
dymka   (2002-04-08 21:48) [2]

Можно настройки грида хранить в базе - тогда и сам юзер с любого компа увидит то что должен увидеть. И естесственно управление доступностью можно управлять уже централизованно.


 
kserg@ukr.net   (2002-04-09 10:25) [3]

2Yuvich © (08.04.02 20:22)
спасибо, приятно осознавать, когда еще чё-то могу придумать.

Такую прогу админа БД я уже сделал.
В ней завожу юзеров, прописываю им права доступа к инфо(полям).

Так вот, саму реализацию принципа "вижу-невижу" инфо у юзера я заложил в грид (а что ж ещё использовать?) через пару его св-в DBgrid.Colums[i].Visible и DBgrid.Colums[i].Tag.
т.е. Tag=0 -поле невидимо(соот-но Visible=false)
/=1 -доступно (Visible=true)
/=2 -редак-ние (Visible=true)

В случае если юзеру поле доступно(видимо), то он может его скрыть/отобразить (это сделано для того, чтобы любой юзер мог отображать у себя в гриде только нужную ему инфо, а не все поля таблицы - подход вполне здравый).
Но в такой схеме мне не нравиться след: получается существуют 2 места, где определяется набор видимых полей - в таблице, где админом формально прописаны права на поля, и в файле-настройках гриде, куда юзер сохраняет установки колонок грида после его настройки.
Но т.к. админ может изменить юзеру права, получается после загрузки юзерского приложения необходимо проверять установки колонок грида с правами на эти поля в таблице (а не изменились ли они?).
Вот этот "кривой" ход мне очень и не нравиться :-(


Ну, какие ещё будут мысли?


 
Johnmen   (2002-04-09 10:36) [4]

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


 
Lusha   (2002-04-09 10:45) [5]

>kserg@ukr.net
Судя по принципу определения доступности колонки в гриде Вы систему безопасности сервера не задействовали? Или я что то не так понял?


 
kserg@ukr.net   (2002-04-09 10:51) [6]

2Lusha © (09.04.02 10:45)
Точно...
>систему безопасности сервера
Намекаешь на ГРАНТЫ?


 
Lusha   (2002-04-09 10:57) [7]

Намекаю? Кричу в полный рост... Тогда синхронизацию доступа с настройками пользователя достаточно будет производить банальным анализом списка полей какой-нибудь Table и сохраненными настройками грида для конкретного пользователя. Причем настройки грида можно будет хранить в реестре Windows - чай, не секретная информация...


 
{bas}   (2002-04-09 12:19) [8]

Можно еще так.
Что бы меньше менять в твоей концепции, предлагаю сделать таблицу, где будут хранится последнии изменения(или еще как-то), при входе юзер лезет в эту таблицу и смотрит, есть ли изменеия в структуре(поля добавились??), и предлагает этому узеру добавить поля в такой-то форме в таком-то гриде, а около этого грида(вообще у всех гридов есть эта кнопка) есть кнопка типа рефрешь поля(ну прям как в Query.Fields в Delphi в дезайн тайм), а если не добавил то это его проблемы.
Или еще вариант - если есть изменеия в структуре(та-же самая таблица при входе), то стирать тот файл в котором хронились настройки, а юзеру говорить - "дорогой поправь настройки того-то грид"


 
Yuvich   (2002-04-09 13:34) [9]

>kserg@ukr.net
Я делаю так:
Есть таблица с перечнем колонок грида и признаком "доступен-недоступен". При этом перечень колонок грида полностью соответствует перечню полей в DataSet"е, которые вообще могут отображаться. Есть место, где пользователь хранит список настроек грида (я храню их в register Windows). Это, я так понял, у тебя уже есть.

При запуске формы пользователем, идет просмотр этой таблицы и все "недоступные" колонки удаляются (Columns[i].Free).
(Это делается в переопределенном конструкторе Create)

Далее идет чтение настроечной таблицы (файла) грида, где определяется "видимость-невидимость" колонок. Тут уже нет никаких беспокойств, т.к. колонки грида - все доступны, другое дело видны или не видны.
(Это делается по событию OnShow или OnActivate)

Т.о. пользователь управляет видимостью только доступных ему колонок.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Наверх









Память: 0.85 MB
Время: 0.025 c
1-94498
Андрей Л
2002-04-16 00:05
2002.04.29
лимит ListBox-а.


14-94556
BAHO
2002-02-21 05:14
2002.04.29
Самая злая проблемма !


3-94267
Viktor Erko
2002-04-08 08:49
2002.04.29
Индексы в отдельном каталоге


1-94403
floyn
2002-04-15 14:02
2002.04.29
Интерфейс Delphi


1-94389
masik
2002-04-17 13:56
2002.04.29
HTML Editor





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский