Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизация в Access 2007
 
 автор: Василий   (20.11.2008 в 23:20)   личное сообщение
 
 

Здравствуйте! Помогите пожалуйста, на этом сайте http://hiprog.com/index.php?option=com_content&task=view&id=251661592&Itemid=35 узнал о таком способе авторизации, только не могу разобратся как написать или как разграничить права в этой проге и вообще?
Dim Какие_права As String
Dim Каой_пароль As String
Поле3.SetFocus

Какие_права = ""
Каой_пароль = ""

Каой_пароль = DFirst("Значение", "Пароль")

If Mid(Каой_пароль, 4, 2) & Mid(Каой_пароль, 7, 2) = Nz(Me!Поле3) Then
Какие_права = "Пользователь"
End If

If Mid(Каой_пароль, 11, 2) & Mid(Каой_пароль, 15, 3) = Nz(Me!Поле3) Then
Какие_права = "Администратор"
End If

If Какие_права <> "" Then
MsgBox "Вы входите в программу с правами - " & Какие_права
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Руфат декабрь"
Else
Кнопка26_Click
End If

End Sub
вот, тут как и куда вписать, чтоб юзер не мог открывать таблицы или фомы? или удалять что либо из таблиц.

  Ответить  
 
 автор: час   (21.11.2008 в 15:33)   личное сообщение
 
 

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


Эти права для разграничения доступа к формам, отчётам и к конкретным полям на формах.
При открытии формы (Load)
проверяется кто входит и можно ли ему открыть эту форму

If Какие_права = "Администратор" Then "Милости просим"
Else
"Идите Вы мимо"

End if

  Ответить  
 
 автор: Василий   (21.11.2008 в 16:52)   личное сообщение
 
 

ничерта не получается, может посоветуете как можно это провернуть? может есть более легкий способ....
при вводе :

If Какие_права = "Администратор" Then "Милости просим"
Else
"Идите Вы мимо"

End if

пишет ошибку...после Then, ругается на ""

  Ответить  
 
 автор: Мюллер   (21.11.2008 в 17:05)   личное сообщение
 
 

Эх, маладеж....

If Какие_права = "Администратор" Then msgbox ("Милости просим")
далее заход на форму
Else

msgbox("Идите Вы мимо")


End if

  Ответить  
 
 автор: Василий   (21.11.2008 в 17:09)   личное сообщение
 
 

спасибо, согласен про молодеж, учимся
А не подскажите как юзеру отключить изменения в формах? и как прописать, чтоб какие то формы юзер видел а какие то нет?
Заранее благодарю !!!!

  Ответить  
 
 автор: Мюллер   (21.11.2008 в 17:31)   личное сообщение
 
 

Для этого придется завести систему ролей и приписывать каждого юзера к определенной роли. При открытии считывается роль юзера, и в зависимости от роли, (select case-ом) делать enabled =false соответсвующим контролам. По аналогии - разрешать или нет открытие различных форм ( Это лучше реализовать путем высвечивания соответствующих пунктов меню для перехода по формам)

  Ответить  
 
 автор: час   (21.11.2008 в 20:12)   личное сообщение
 
 

Вы не внимательно читали предыдущие объяснения......

роль - это можно праваюзвера

If Какие_права = "Администратор" Then
-форму открыть можно, править всё можно
Else
-форму открыть можно, но править ничё нильзя
End if

И пример Вы не внимательно разобрали - всё описано вроде бы доходчиво.........



ну вот ещё пример:

If Какие_права = "Администратор" Then
Me![NOMER].Locked = False
Me![Поле254].Locked = False
Me![Поле256].Locked = False
Me![COMENT].Locked = False
Me![TELEFON].Locked = False
Me![SVID].Locked = False
Me![ИННН].Locked = False
Me![NDATE].Locked = False
Me![ODATE].Locked = False
Me![NAM].Locked = False

Else
Me![NOMER].Locked = True
Me![Поле254].Locked = True
Me![Поле256].Locked = True
Me![COMENT].Locked = True
Me![TELEFON].Locked = True
Me![SVID].Locked = True
Me![ИННН].Locked = True
Me![NDATE].Locked = True
Me![ODATE].Locked = True
Me![NAM].Locked = True

End If

  Ответить  
 
 автор: Василий   (23.11.2008 в 14:48)   личное сообщение
 
 

я только начал учить этот язык )))))

If Какие_права = "Администратор" Then
-форму открыть можно, править всё можно - как это написать??? если фома наз. ОбщееДек.
Else
-форму открыть можно, но править ничё нильзя- и как записать править нельзя?
End if

пробую так...

If Какие_права = "Администратор" Then
MsgBox "Добро пожаловать Админ"
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Общее.Дек"
Me![Компания].Edit = False

Else
MsgBox "Код Админа"
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Общее.Дек"
Me![Компания].Edit = True

но не получается

  Ответить  
 
 автор: час   (23.11.2008 в 17:06)   личное сообщение
 
 


Вообщето чуть выше написано
Me![SVID].Locked = False

Стало быть :
Me![Компания].Locked = False

и эту строчку надо писать в форме, которую открываем, DoCmd.OpenForm "Общее.Дек"

а не в форме, которую закрываем DoCmd.Close acForm, Me.Name

  Ответить  
 
 автор: Василий   (23.11.2008 в 20:11)   личное сообщение
 
 

вроде все вписал, только объясните мне пожалуйста, про after_update и BeforeUpdate ведь на сколько я понял мне это нужно будет....

заранее всем огромное спасибо!

If Какие_права = "Администратор" Then
Me![Компания].Edit = True
Else
Me![Компания].Edit = False
End If
End Sub

еще пишет : невозможна блокировка элемента управления пока его изменения не сохранены

  Ответить  
 
 автор: П.Полиграфович   (24.11.2008 в 15:17)   личное сообщение
 
 

Если пользователи, у вас уже "в наличии", то Сервис-Защита-Разрешения и меняем права доступа к таблицам, с которыми работают формы.

  Ответить  
 
 автор: Василий   (25.11.2008 в 08:07)   личное сообщение
 
 

я пробовал это...по сети не действует...только для моего компа, а если входить через другой комп пропускает не спрашивая ))))

  Ответить  
 
 автор: П.Полиграфович   (25.11.2008 в 16:07)   личное сообщение
 
 

А вы добавили сетевых пользователей в базу?

  Ответить  
 
 автор: час   (25.11.2008 в 11:33)   личное сообщение
 
 

If Какие_права = "Администратор" Then
Me![Компания].Setfocus
Me![Компания].Locked = False
Else
Me![Компания].Setfocus
Me![Компания].Locked = True
End If
End Sub

  Ответить  
 
 автор: Василий   (25.11.2008 в 19:34)   личное сообщение
 
 

Прикол в том, что он не определяет кто я? для него нет разницы какой я пароль ввожу, админа или пользователя

выдает то, что после else (при любом вводимом пароле) ... т.е блокирует поле и выдает MsgBox "НЕТ ПРАВ!!!!!" как я иписал для не админа

Private Sub Form_Load()

If Какие_права = "Администратор" Then
Me![Компания].SetFocus
Me![Компания].Locked = False
Else
Me![Компания].SetFocus
Me![Компания].Locked = True
MsgBox "НЕТ ПРАВ!!!!!"
End If

End Sub

  Ответить  
 
 автор: час   (25.11.2008 в 20:18)   личное сообщение
 
 

Прикрепите сюда свою базу, сжав её архиватором -
мы посмотрим, что у Вас и как у Вас.

  Ответить  
 
 автор: Василий   (25.11.2008 в 21:23)   личное сообщение
45 Кб.
 
 

Заранее благодарю!

  Ответить  
 
 автор: час   (25.11.2008 в 21:42)   личное сообщение
29 Кб.
 
 

Вот посмотрите, Василий.

  Ответить  
 
 автор: Василий   (25.11.2008 в 21:55)   личное сообщение
 
 

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

а какой командой блокируется удаление строк?

  Ответить  
 
 автор: час   (26.11.2008 в 08:54)   личное сообщение
 
 

Просто эту заметку я написал (Авторизация средствами Access)
- потому и знаю ответ.

А как Вы планируете удалять строки?
Есть несколько вариантов:
Удалять запросом
Удалять с помощью DAO
Удалять прям на форме выделяя и нажимая Delete

Взависимости от выбранного - будет и ответ........

  Ответить  
 
 автор: Василий   (26.11.2008 в 12:11)   личное сообщение
 
 

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

и если вас не затруднит, написать также как можно вообще блокировать вход юзеру на форму заранее благодарю!

  Ответить  
 
 автор: час   (26.11.2008 в 21:22)   личное сообщение
31 Кб.
 
 

и если вас не затруднит, написать также как можно вообще блокировать вход юзеру на форму  заранее благодарю!
Видимо вот так:

  Ответить  
 
 автор: час   (26.11.2008 в 21:32)   личное сообщение
31 Кб.
 
 


чтоб юзер не мог удалять строки....


Можно вот так

  Ответить  
 
 автор: Василий   (26.11.2008 в 21:48)   личное сообщение
 
 

отлично! огромное вам спасибо!!!!!

  Ответить  
 
 автор: Василий   (27.11.2008 в 08:31)   личное сообщение
 
 

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

  Ответить  
 
 автор: час   (27.11.2008 в 15:32)   личное сообщение
 
 

тада надо в таблицу, где правят добавить поле , где будет писаться админ правил или юзер правил.
И уже ориентируясь на енто поле сравнивая его с текущим вошедшим - разрешать, либо запрещать править.................

  Ответить  
 
 автор: Василий   (27.11.2008 в 16:23)   личное сообщение
 
 

мда....непотяну я этого пока, мож современем....спасибо огромное

  Ответить  
 
 автор: час   (27.11.2008 в 18:12)   личное сообщение
 
 

потянешь -
Вы просто ленитеся......
Добавить поле в таблицу - дело не хитрое.
Дать полю имя - тоже не трудно. Например такое имя -"КТО"

Затем в форме будет строчка
Me!KTO= Какие_Права
вот и всё...........

  Ответить  
 
 автор: Василий   (27.11.2008 в 23:02)   личное сообщение
 
 

Спасибо Вам, все получилось

  Ответить  
 
 автор: час   (28.11.2008 в 09:37)   личное сообщение
 
 

Это выглядит как отписька

  Ответить  
 
 автор: Василий   (28.11.2008 в 10:09)   личное сообщение
 
 

не реально получилось, начинаю потехоньку понимать.... как вы и сказали создал поле "Кто" а в форме вывел:

Private Sub Компания_AfterUpdate()
Me!кто = Какие_права
End Sub

вот и все ))))

а можно ли провернуть еще и, что то вроде такого?
If [Проплата] = Отказник Then
[Компания] BackColor или backfont = ED1C24
End If
???

  Ответить  
 
 автор: Мюллер   (28.11.2008 в 10:51)   личное сообщение
 
 


а можно ли провернуть еще и, что то вроде такого?
If [Проплата] = Отказник Then
[Компания] BackColor или backfont = ED1C24
End If
???



А попробовать самому?
Поверьте, ответ получите быстрее, чем на форуме. Не бойтесь эксперименитровать - акс это не минное поле, и программер может ошибаться сколько угодно раз.

  Ответить  
 
 автор: Василий   (28.11.2008 в 11:30)   личное сообщение
 
 

согласен, просто я совсем новичек, только начал изучать, и уверен что если бы не час я бы вообще до этого не допер, за что ему огромное спасибо...мне бы хотябы узнать, а направление правильное?

  Ответить  
 
 автор: Мюллер   (28.11.2008 в 11:42)   личное сообщение
 
 

Верной дорогой идете, товарищ (с) В.И.Ленин

  Ответить  
 
 автор: час   (28.11.2008 в 15:42)   личное сообщение
 
 

  Ответить  
 
 автор: Василий   (28.11.2008 в 20:47)   личное сообщение
46 Кб.
 
 

ребята помогите кручусь гдето близко а попасть не могу

Private Sub Form_Load()
If [Проплата] = Отказник Then
Me.Компания.BackColor = &H10FF01
End If

где ошибка?

  Ответить  
 
 автор: час   (28.11.2008 в 20:59)   личное сообщение
 
 

А напишите
Private Sub Form_Load()
If [Проплата] = Отказник Then
Me.Компания.BackColor = 255
End If

А ваще то надо условное форматирование Вам пробовать........

  Ответить  
 
 автор: час   (28.11.2008 в 21:03)   личное сообщение
23 Кб.
 
 

вот так посмотрите

  Ответить  
 
 автор: час   (28.11.2008 в 21:07)   личное сообщение
 
 

Private Sub Form_Load()
If [Проплата] = "Отказник" Then
Me.Компания.BackColor = 255
End If

  Ответить  
 
 автор: Василий   (28.11.2008 в 21:31)   личное сообщение
 
 

я не совсем понимаю как делать форматирование, можете объяснить?
Все разобрался!!!! огромное спасибо!!!!!

Жаль тока что только 3 условия можно задать....

  Ответить  
 
 автор: час   (28.11.2008 в 22:16)   личное сообщение
 
 

За Ваши успехи!!!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList