![]() |
|
![]() ![]() ![]() |
|
SULLEN_27 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.2.2008 Репутация: нет Всего: -2 |
Драсьте. Подскажите в одном вопросе чот никак не догоню как реализовать это дело. В общем есть база access которая лежит на сетевом ресурсе, к ней имеют доступ определенные юзера которые соответственно работают с этой базой заносят изменения, чот там добавляют и т.п.. Ну соответственно реализовал все это на delphi через ado, datasource, table - ну вся эта байда. Вопрос в следующем. Каким образом сделать так, что бы допустим заходит человек под своим логином и паролем в свою программу и что бы видел в этой общей базе т.е. в dbgrid только те сведения которые относятся к нему. и точно так же со следующим юзером ага типа зашел вот он под этим логином и соответственно в dbgrid отобразились поля только относящиеся к нему. допустим с аутентификацией пользователя я разберусь, а вот вот как сделать сделать привязку полей на определенного пользователя не пойму не фига? подскажите пож... Только sql не предлагайте.
|
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 2 Всего: 13 |
м-да, если не предлагать sql, то можно столбцы делать невидимыми. какие столбцы делать невидимыми можно хранить там же где и настройки профиля (тот же пароль)
но sql лучше, опиши задачу подробней, подскажем как запрос составить |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Сделать отдельную табличку, в которой прописывать права каждого пользователя.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
и динамически формировать SQL )))) Без SQL увы - будет очень сложно (ну или просто "сложнее"). Вриант решения: 2 таблицы. 1 - таблица ролей. 2 таблица пользователей. Можно еще 3 таблицу - пользователь/роль, если планируется что одному юзеру 5 колонок отражать, второму - другие 5, третьему - все 10. В таблице ролей заводим поле "Columns". Где пишем состав полей: "clm1,clm2,clm3,clm4,clm5" Ну иформируем SQL исходя из ролей. Вот как быть с формированием колонк в Гриде. Можно, например, в дизайне не создавать колонок. Тогда грид будет отражаться в колонках все пришедшие поля. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
В смысле? Я имел в виду, что скрывать/показывать колонки в гриде в зависимости от прав доступа. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
okkonst |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 5.9.2010 Где: Воронеж Репутация: нет Всего: 1 |
Без детального описания задачи (на языке бизнес-процесса, к примеру: надо создать список клиентов, который имеет набор атрибутов, зависящий от пользователя БД, чтобы разные менеджеры могли исправлять разные поля. Пример "навскидку", без претензии на разумность) посоветовать что-то конкретное сложно. Вернее, можно четко ответить на поставленный вопрос (как сделано выше), но есть большая вероятность того, что вопрос задан неправильно (пример: "Как выбить болт из гайки?" - от человека, не знающего о существовании гаечных ключей) и на самом деле нужно совсем другое. Просто я, как преп, постоянно сталкиваюсь именно с такой ситуацией. Поэтому присоединяюсь к просьбе, обращенной к автору треда, подробнее рассказать о проблеме - зачем понадобилось такое техническое решение? Поскольку вариантов много - хранить список соответствия полей и пользователей в бд, реестре, внешнем файле, самой программе (коде); не исключен и вариант неправильного проектирования БД...
|
|||
|
||||
SULLEN_27 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.2.2008 Репутация: нет Всего: -2 |
Спасибо конечно, что хоть откликнулись на мой вопрос. В общем я еще чуть подумаю, если не надумаю, то опишу задачу детально по полочкам, может тогда и разберемся.
|
|||
|
||||
SULLEN_27 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.2.2008 Репутация: нет Всего: -2 |
Ладно, сча детально описывать не буду пока, задам вопрос по короче и по точнее, мож и на мысль вас какую наведет.
Вопрос. Есть форма, на форме расположены компоненты (описываю только виз. компоненты) Dbgrid, checkbox - 2 шт., button. И сделать так: ставлю галочку на одном из checkbox жму на кнопку и отображаются только те поля, в котором хоть в одном поле стоит фамилия Иванов И.И. (допустим поле с Ф.И.О - это пусть будет 2 столбец, а их там много много всяких фамилий и именов, а мне вот так раз и опа... отобразились поля только с фамилией Иванов И.И. ) соответственно все остальные поля не видимы были, причем не только не видимы а что бы они вобще в Dbgrid не подгружались, ну фиг с ним пусть даже и подгружаются. А потом ставлю галку на другой checkbox, жму на кнопку и отобразились поля где фигурирует фамилия Сидоров А.А., вернее конечно здесь использовать вместо checkbox RadioButton. |----------------------------------------------------------------------------------------------------------------- | 1 | Сидоров | зам.нач. | 35 лет | казел | | | |---------------------------------------------------------------------------------------------------------------- | | Иванов | начальник |40 лет | норм. мужик| | | | 2 | | | | | | | --------------------------------------------------------------------------------------------------------------- И раз так и все поля допустим которым 40 лет и отобразил, а всех остальных нафиг от сюда, ну и нумерция соответственно должна измениться. Ну это так я нарисовал примерно, база то у меня другая конечно и access замечу. Добавлено через 1 минуту и 8 секунд Ой блин чот предварительный просмтор не сделал и все сместилось. ну фиг с ним поймете. |
|||
|
||||
okkonst |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
ТС явно путается в полях и записях.
SULLEN_27, перейди в объяснениях на строчки и столбцы. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
SULLEN_27 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.2.2008 Репутация: нет Всего: -2 |
Да. Не поля а записи. Не правильно изложил.
|
|||
|
||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
всего-то. определяйся, короче. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
SULLEN_27 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.2.2008 Репутация: нет Всего: -2 |
Существует n кол-во пользователей у которых установлена клиенсткая программа для работы с общей базой acceess. Каждый из пользователей формирует заявки на ремонт в службу ИТ (в этой общей базе). Так вот и требуется что бы каждый пользователь видел в своей клиентской программе только свои заявки. В каждой заявке сформированным пользователем, автоматически в поле заносится запись т.е. его имя пользователя в сети. Так вот и думаю что по имени пользователя и делать выборку именно его записей из общей базы (что бы только свои заявки видел в DBGRID). Ну а у меня стоит админская часть программы - которая то же работает с этой же базой что и пользаки, ток я там вижу все принятые заявки удаленные и т.д. Вот впринципе и все.
|
|||
|
||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
1 - id админа Добавлено через 50 секунд вместо table пользуй query Добавлено через 1 минуту и 31 секунду админу вывалятся все заявки, а простому смертному только его Добавлено через 2 минуты и 9 секунд вобщем можно обойтись без динамического формирования SQL -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
SULLEN_27 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 9.2.2008 Репутация: нет Всего: -2 |
Если честно, то с qvery не работал да и с SQL не очень я. Да. Наверное лучше бы без динамического формирования SQL. Просто я не пойму SQL Qvery и база access разве все это вяжется между собой. Ведь qvery на сколько я знаю этот компонент вяжется в основном с SQL. мне бы то что хорошо работает с access.
Добавлено через 1 минуту и 3 секунды Хотя честно, то нужно сесть и почитать по внимательней на всю эту тему. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |