Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пользователя привязать к определенным полям access, аутентификация по пользователю 
V
    Опции темы
SULLEN_27
Дата 6.9.2010, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.2.2008

Репутация: нет
Всего: -2



Драсьте. Подскажите в одном вопросе чот никак не догоню как реализовать это дело. В общем есть база access которая лежит на сетевом ресурсе, к ней имеют доступ определенные юзера которые соответственно работают с этой базой заносят изменения, чот там добавляют и т.п.. Ну соответственно реализовал все это на delphi через ado, datasource, table - ну вся эта байда. Вопрос в следующем. Каким образом сделать так, что бы допустим заходит человек под своим логином и паролем в свою программу и что бы видел в этой общей базе т.е. в dbgrid только те сведения которые относятся к нему. и точно так же со следующим юзером ага типа зашел вот он под этим логином и соответственно в dbgrid отобразились поля только относящиеся к нему. допустим с аутентификацией пользователя я разберусь, а вот вот как  сделать сделать привязку полей на определенного пользователя не пойму не фига? подскажите пож... Только sql не предлагайте.
PM MAIL   Вверх
aleksh
Дата 6.9.2010, 14:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 2
Всего: 13



м-да, если не предлагать sql, то можно столбцы делать невидимыми. какие столбцы делать невидимыми можно хранить там же где и настройки профиля (тот же пароль)

но sql лучше, опиши задачу подробней, подскажем как запрос составить
PM MAIL   Вверх
Данкинг
Дата 6.9.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Сделать отдельную табличку, в которой прописывать права каждого пользователя.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
pseud
Дата 6.9.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Данкинг @  6.9.2010,  14:44 Найти цитируемый пост)
Сделать отдельную табличку, в которой прописывать права каждого пользователя. 

и динамически формировать SQL ))))
Без SQL увы - будет очень сложно (ну или просто "сложнее").

Вриант решения:
2 таблицы. 1 - таблица ролей. 2 таблица пользователей. Можно еще 3 таблицу - пользователь/роль, если планируется что одному юзеру 5 колонок отражать, второму - другие 5, третьему - все 10.

В таблице ролей заводим поле "Columns". Где пишем состав полей: "clm1,clm2,clm3,clm4,clm5"
Ну иформируем SQL исходя из ролей.
Вот как быть с формированием колонк в Гриде. 
Можно, например, в дизайне не создавать колонок. Тогда грид будет отражаться в колонках все пришедшие поля.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Данкинг
Дата 6.9.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(pseud @  6.9.2010,  17:45 Найти цитируемый пост)
и динамически формировать SQL ))))

В смысле? Я имел в виду, что скрывать/показывать колонки в гриде в зависимости от прав доступа.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
okkonst
Дата 6.9.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.9.2010
Где: Воронеж

Репутация: нет
Всего: 1



Без детального описания задачи (на языке бизнес-процесса, к примеру: надо создать список клиентов, который имеет набор атрибутов, зависящий от пользователя БД, чтобы разные менеджеры могли исправлять разные поля. Пример "навскидку", без претензии на разумность) посоветовать что-то конкретное сложно. Вернее, можно четко ответить на поставленный вопрос (как сделано выше), но есть большая вероятность того, что вопрос задан неправильно (пример: "Как выбить болт из гайки?" - от человека, не знающего о существовании гаечных ключей) и на самом деле нужно совсем другое. Просто я, как преп, постоянно сталкиваюсь именно с такой ситуацией. Поэтому присоединяюсь к просьбе, обращенной к автору треда, подробнее рассказать о проблеме - зачем понадобилось такое техническое решение? Поскольку вариантов много - хранить список соответствия полей и пользователей в бд, реестре, внешнем файле, самой программе (коде); не исключен и вариант неправильного проектирования БД...
PM MAIL   Вверх
SULLEN_27
Дата 6.9.2010, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.2.2008

Репутация: нет
Всего: -2



Спасибо конечно, что хоть откликнулись на мой вопрос. В общем я еще чуть подумаю, если не надумаю,  то опишу задачу детально по полочкам, может тогда и  разберемся.
PM MAIL   Вверх
SULLEN_27
Дата 6.9.2010, 20:23 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.2.2008

Репутация: нет
Всего: -2



Ладно, сча детально описывать не буду пока, задам вопрос по короче и по точнее, мож и на мысль вас какую наведет. 

  Вопрос.
   
     Есть форма, на форме расположены компоненты (описываю только виз. компоненты)
     Dbgrid, checkbox - 2 шт., button. И сделать так: ставлю галочку на одном из checkbox жму  на   кнопку и отображаются только те поля, в котором хоть в одном поле стоит фамилия Иванов И.И. (допустим поле с Ф.И.О - это пусть будет 2 столбец, а их там много много всяких фамилий и именов, а мне вот так раз и опа... отобразились поля только с фамилией Иванов И.И. ) соответственно все остальные поля не видимы были, причем не только не видимы а что бы они вобще в Dbgrid не подгружались, ну фиг с ним пусть даже и  подгружаются. А потом ставлю галку на другой checkbox,  жму на кнопку и отобразились поля где фигурирует фамилия Сидоров А.А., вернее конечно здесь использовать вместо checkbox  RadioButton.      

|-----------------------------------------------------------------------------------------------------------------
|    1   |  Сидоров | зам.нач.     | 35 лет | казел           |                        |                           |
|----------------------------------------------------------------------------------------------------------------           |         | Иванов   |  начальник  |40 лет | норм. мужик|                        |                           |                  |    2   |                |                     |                                  |                        |                           |
| ---------------------------------------------------------------------------------------------------------------    
И раз так и все поля допустим которым 40 лет и отобразил, а всех остальных нафиг от сюда, ну и нумерция соответственно должна измениться. Ну это так я нарисовал примерно, база то у меня другая конечно и access замечу.

Добавлено через 1 минуту и 8 секунд
Ой блин чот предварительный просмтор не сделал и все сместилось. ну фиг с ним поймете.
PM MAIL   Вверх
okkonst
Дата 6.9.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.9.2010
Где: Воронеж

Репутация: нет
Всего: 1



Нифига я не понял. 

Цитата

и отображаются только те поля, в котором хоть в одном поле стоит фамилия Иванов И.И. 


Может, все-таки, не поля, а записи? То есть, отображаются те записи, в полях которых присутствует иванов и.и.? Если так - смотри на свойство filter датасета или генери sql с соответствующим условием. Если же тебе надо прятать поля (то есть КОЛОНКИ грида), в которых ни в одной записи нет искомого текста, тут сложнее. Я бы сделал так: спрятал бы все колонки, затем:

MyDataset.DisableControls;
MyDataset.First;
while not MyDataset.eof do
begin
  for C:=0 to dbgrid1.Columns.Count -1  do
    dbgrid1.Columns[C].Visible := dbgrid1.Columns[C].Visible or (Pos('Иванов И.И.', MyDataSet.FieldByName(dbgrid1.Columns[C].FieldName).AsString)>0);
  MyDataset.Next;
end;

MyDataset.EnableControls;

На всякий случай - указанный поиск регистрозависим. MyDataSet - это твой компонент доступа к данным, вероятно, TADOTable (бросил бы каку, а?)

Это сообщение отредактировал(а) okkonst - 6.9.2010, 22:58
PM MAIL   Вверх
Deniz
Дата 7.9.2010, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



ТС явно путается в полях и записях.
SULLEN_27, перейди в объяснениях на строчки и столбцы.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
SULLEN_27
Дата 7.9.2010, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.2.2008

Репутация: нет
Всего: -2



Да. Не поля а записи. Не правильно изложил.
PM MAIL   Вверх
pseud
Дата 7.9.2010, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(SULLEN_27 @  7.9.2010,  10:16 Найти цитируемый пост)
Да. Не поля а записи. Не правильно изложил. 

всего-то.
определяйся, короче.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
SULLEN_27
Дата 7.9.2010, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.2.2008

Репутация: нет
Всего: -2



Существует n кол-во пользователей у которых установлена клиенсткая программа для работы с общей базой acceess. Каждый из пользователей формирует заявки на ремонт в службу ИТ (в этой общей базе). Так вот и требуется что бы каждый пользователь видел в своей клиентской программе только свои заявки. В каждой заявке сформированным пользователем, автоматически в поле заносится запись т.е.  его имя пользователя в сети. Так вот и думаю что по имени пользователя и делать выборку именно его записей из общей базы (что бы только свои заявки видел в DBGRID). Ну а у меня стоит админская часть программы - которая то же работает с этой же базой что и пользаки, ток я там вижу все принятые заявки удаленные и т.д. Вот впринципе и все.
PM MAIL   Вверх
pseud
Дата 7.9.2010, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Код

select 
  *
from
  t_claim c
where
  :v_id_user = 1 
  or c.id_user = :v_id_user

1 - id админа

Добавлено через 50 секунд
вместо table пользуй query

Добавлено через 1 минуту и 31 секунду
админу вывалятся все заявки, а простому смертному только его

Добавлено через 2 минуты и 9 секунд
вобщем можно обойтись без динамического формирования SQL


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
SULLEN_27
Дата 7.9.2010, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.2.2008

Репутация: нет
Всего: -2



Если честно, то с qvery не работал да и с SQL не очень я. Да. Наверное лучше бы без динамического формирования SQL. Просто я не пойму SQL Qvery и база access разве все это вяжется между собой. Ведь qvery на сколько я знаю этот компонент вяжется в основном с SQL. мне бы то что хорошо работает с access.

Добавлено через 1 минуту и 3 секунды
Хотя честно, то нужно сесть и почитать по внимательней на всю эту тему.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1223 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.