powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Форма входа
85 сообщений из 85, показаны все 4 страниц
Форма входа
    #37392302
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В шаблонной базе данных Борей, есть форма которая меня заинтересовала - "Окно входа"
Суть ее в том что она выскакивает при входе в базу данных и предлагает из списка сотрудников выбрать от имени кого зайти. При чем, для разных людей, из-за должности которую они занимают и очевидно для их потребностей, после подтверждения в форме "Окно входа" выскакивает новая форма состоящая из нескольких связанных подчиненных форм, и опять таки для разных людей из списка выскакивает разная информация.

Мне в голову пришла идея оптимизировать эту форму и внедрить в нее еще и пароль. Есть таблица со списком сотрудников и должностей которые они занимают и таблица со списком паролей, связь таблиц возможна по уникальному айди сотрудника. В результате нужно чтобы выбрав из раскрывающегося списка сотрудника и введя ниже в текстовое поле пароль, пользователь при нажатии кнопки "ОК" прошел проверку на правильность пароля и в зависимости от пользователя открывалась форма, которая бы содержала нужную для пользователя информацию.

Для реализации задуманного я понимаю, что мне не достаточно просто конструктора, а полностью синтаксис SQL я еще не изучил, а что-то просто еще не знаю, поэтому не понимаю некоторые вопросы, которые перечислю ниже.

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

2. Как связать выпадающий список пользователей, которые берет список полей из таблицы "Пользователи" с текстовым полем для пароля, который должен совпадать с выбранным пользователем? На сколько я понимаю, связь опять таки должна осуществляться через таблицы и их ключевое поле айди пользователя, а прописываться это должно по идее в каком-то из способов обработки событий для кнопки "ОК".

3. Ну и наконец, чтобы для пользователя с такой-то должностью открывалась такая-то форма. Опять таки на сколько я понимаю это должно прописываться в обработчике событий кнопки "ОК"

Собственно, что именно надо прописать и может быть дадите еще пару каких-то советов по теме. Заранее спасибо.
...
Рейтинг: 0 / 0
Форма входа
    #37392320
WRX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WRX
Гость
AleX_X89, вот то, что Вам нужно - изучите Разграничение прав доступа
...
Рейтинг: 0 / 0
Форма входа
    #37392455
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WRX, это несколько не то что я спрашивал. Я задал конкретные вопросы в которых бы мне хотелось разобраться. Хотя чтиво которое вы предоставили, меня тоже заинтересовало, за что и спасибо :)
Но в целом, вопрос остается открытым.
...
Рейтинг: 0 / 0
Форма входа
    #37392566
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleX_X89,

Задачка, конечно, интересная... Но вот пара вопросиков: а что произойдет, если вдруг в таблице, в которой содержатся данные о сотрудниках вдруг исчезнут записи? Или сама таблица накроется? Или если возникнет необходимость запустить БД сотруднику, информации о котором в таблицах БД нет? Как тогда будет возможно осуществить вход?
Чем Вас не устраивают штатные возможности Аксесса? На крайний случай можно всегда замутить привязку, сделав поле "Имя_для_пользователя" в таблице "Сотрудники"...
P.S. просто я тоже в свое время мудрил, мудрил, пока понял, что не стоит изобретать велосипед. Штатная защита вполне для этого годится...;)
...
Рейтинг: 0 / 0
Форма входа
    #37392575
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleX_X89В шаблонной базе данных Борей, есть форма которая меня заинтересовала - "Окно входа"


В окне БД - Сервис->Параметры запуска->Вывод формы/страницы..... Выбирайте, какую форму хотите запускать при открытии БД...
...
Рейтинг: 0 / 0
Форма входа
    #37392616
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleX_X892. Как связать выпадающий список пользователей, которые берет список полей из таблицы "Пользователи" с текстовым полем для пароля, который должен совпадать с выбранным пользователем? На сколько я понимаю, связь опять таки должна осуществляться через таблицы и их ключевое поле айди пользователя, а прописываться это должно по идее в каком-то из способов обработки событий для кнопки "ОК".


Ну вот, как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub CommandButton1_Click ()
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordSet("Таблица_с_пользователями")
      With rst
                 .FindFirst("ID=" & Me.ID.Value)
                 If .NoMach Then
                       MsgBox "Ошибка входа! О данном пользователе нет информации в БД."
                       Exit Sub
                 Else
                     If Me.Поле_на_форме_для_ввода_пароля.Value <> .Fields("Поле_с_паролем_в_таблице_Пользователи").Value Then
                         MsgBox "Пароль не правильный или несоответствует имени пользователя"
                          Exit Sub
                     End If
                     'Вот здесь пишете, что душе угодно: открывайте форму главного меню, приветствия и т.д.
                 End If
      End With
rst.Close
Set rst = Nothing
End Sub
...
Рейтинг: 0 / 0
Форма входа
    #37392648
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleX_X893. Ну и наконец, чтобы для пользователя с такой-то должностью открывалась такая-то форма. Опять таки на сколько я понимаю это должно прописываться в обработчике событий кнопки "ОК"


Там где я сказал, прописывать "все что душе угодно":

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Select Case .Fields("Должность").Value 'Естественно поле "Должность" должно быть в таб. "Пользователи"
         Case "Старший сантехник"
                 DoCmd.OpenForm "Форма_для_сантехников"
         Case "Младший помощник старшего сантехника"
                 DoCmd.OpenForm "Форма_для_младших_помощников_старших_сантехников"
         Case "Просто ходит за зарплатой"
                 DoCmd.OpenForm "Форма_для_меня_и_босса"
         ......
         ......
         ......
End Select
...
Рейтинг: 0 / 0
Форма входа
    #37392653
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097Задачка, конечно, интересная... Но вот пара вопросиков: а что произойдет, если вдруг в таблице, в которой содержатся данные о сотрудниках вдруг исчезнут записи? Или сама таблица накроется? Или если возникнет необходимость запустить БД сотруднику, информации о котором в таблицах БД нет? Как тогда будет возможно осуществить вход?
Чем Вас не устраивают штатные возможности Аксесса? На крайний случай можно всегда замутить привязку, сделав поле "Имя_для_пользователя" в таблице "Сотрудники"...
P.S. просто я тоже в свое время мудрил, мудрил, пока понял, что не стоит изобретать велосипед. Штатная защита вполне для этого годится...;)

Форма входа нужна для удобства юзверов и чтобы не нагружать их лишней информацией. Что касается админа, то чтобы обезопаситься в приведенной вами ситуации, вполне можно создать дополнительную базу данных, в которой будут лишь две таблицы: с тем же персоналом и с паролями, которые будут ссылаться на рабочую базу данных. И в случае необходимости всегда будет возможность изменить записи в таблицах обходя форму входа рабочей базы данных.

Кроме того я не хочу создавать ограничение прав для юзеров. Я хочу нечто другое...

Хочу создать разделенные формы с подчиненными формами для каждой группы работников, в каждую из форм вставить все что нужно: ссылки и кнопки на требуемые отчеты и формы для работы той или иной должностной группы пользователей. Таким образом получается что я создам пользовательский интерфейс при этом не закрывая так сказать исходный код, но по большому счету любому пользователю будет незачем просматривать все отчеты, фомы и запросы базы в поисках непонятно чего, так как у него все будет нужно у него перед глазами.
...
Рейтинг: 0 / 0
Форма входа
    #37392679
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
AleX_X892. Как связать выпадающий список пользователей, которые берет список полей из таблицы "Пользователи" с текстовым полем для пароля, который должен совпадать с выбранным пользователем? На сколько я понимаю, связь опять таки должна осуществляться через таблицы и их ключевое поле айди пользователя, а прописываться это должно по идее в каком-то из способов обработки событий для кнопки "ОК".

3. Ну и наконец, чтобы для пользователя с такой-то должностью открывалась такая-то форма. Опять таки на сколько я понимаю это должно прописываться в обработчике событий кнопки "ОК"

ничего ни с чем связывать не нужно,
нужно по клику ОК попытатся выбрать должность по введённым Логин и Пароль
если выборка вернёт запись - значит фиксируете где-то Логин пользователя и его Должность
перестраиваете меню под эту должность и открываете форму для этой должности
типа так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
strSQL = "select Должность from Tab where id=" & СписокЛогинов & " and " password='" & ПолеПароль & "'"
rs.Open strSQL, CurrentProject.connection
if rs.Eof Then
  ' Пароль ошибочный
else
  ' Пароль правильный
  Должность = rs.fields(0)
  docmd.close acform, Me.Name
  select case Должность 
    case 1
      docmd.openform "Form1"
    case 2
      docmd.openform "Form2"
    ' ....
  end select
end if
...
Рейтинг: 0 / 0
Форма входа
    #37392691
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097В окне БД - Сервис->Параметры запуска->Вывод формы/страницы..... Выбирайте, какую форму хотите запускать при открытии БД...

Спасибо) Разобрался с этим. У кого MS Access 2007, Кнопка "Оффис"/ Параметры Access / Текущая база данных / Форма просмотра (выбрать из списка)
...
Рейтинг: 0 / 0
Форма входа
    #37392767
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, буду пробовать оба варианта. Позже отпишусь получилось или нет.
ПС. если будут еще какие-то советы, то был бы рад их выслушать.
...
Рейтинг: 0 / 0
Форма входа
    #37398312
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
.FindFirst ("ID=" & Me.ID.Value)

Wipeout2097, можно подробнее обьяснить синтаксис этой строчки, так как на ней выдает ошибку. Что мы ищем?)
...
Рейтинг: 0 / 0
Форма входа
    #37398325
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AleX_X89выдает ошибку
Какую???
...
Рейтинг: 0 / 0
Форма входа
    #37398349
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097, разобрался со всем. Спасибо большое! :)
...
Рейтинг: 0 / 0
Форма входа
    #37398363
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,
авторMethod or data member not found
С этим разобрался) просто нужно было указать название выпадающего поля вместо ID в строчке

Код: plaintext
.FindFirst ("ID=" & Me.Название_выпадающего_списка_в_форме.Value)

Еще один момент... все работает в смысле идет отбор и по пользователям и по паролю, а также открывает форму для выбраного пользователя при условии такой-то должности, но есть небольшой казус... форма входа остается открытой после клика по кнопке "ОК" и открытия нужной формы.
Очевидно нужна строчка с прописью закрытия формы...
...
Рейтинг: 0 / 0
Форма входа
    #37398367
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
AleX_X89...
Еще один момент... все работает в смысле идет отбор и по пользователям и по паролю, а также открывает форму для выбраного пользователя при условии такой-то должности, но есть небольшой казус... форма входа остается открытой после клика по кнопке "ОК" и открытия нужной формы.
Очевидно нужна строчка с прописью закрытия формы...
11109675
9-тая снизу
...
Рейтинг: 0 / 0
Форма входа
    #37399050
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ё9-тая снизу

Код: plaintext
  docmd.close acform, Me.Name
На сколько я понимаю Name это имя формы, хоть если чесно я думал что
Код: plaintext
Me.
служит как обозначения обьектов открытой к примеру формы...
Ну в общем, банальность, но при имени формы Welcome
не работает ни первый вариант

Код: plaintext
DoCmd.Close acForm, Me.Form_Welcome

ни второй

Код: plaintext
DoCmd.Close acForm, Me.Welcome

при выполнении скрипта, пишет что обьект не найден


Погуглил немного и нашел как бы фак по случаю
http://am.rusimport.ru/msaccess/topic.aspx?ID=728

там выложено три разных варианта прописи в VB

При чем выскакивает та же проблема, хоть и ошибка уже другая, в варианте 2 и 3, то есть соответсвенно:
Код: plaintext
 DoCmd.Close acForm, MyForm.Name
Код: plaintext
 DoCmd.Close acForm, MyForm.Name, acSaveYes
ошибка выскакивает
Run-time error "424"
object required

Помог только первый вариант:
Код: plaintext
DoCmd.Close ' закрывает активный объект
Но при этом его понятное дело нужно ставить до отбора по должностям и приказа на запуск соответсвующей формы, иначе моментально закрывает только что открытую форму, а форма входа остается открытой и визуально получается что абсолютно ничего не происходит по клику кнопки "ОК"
...
Рейтинг: 0 / 0
Форма входа
    #37399054
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть. вопрос заключается в том как правильно определить имя формы и как нужно прописывать это в способах по закрытию формы которые возможны но у меня почему-то не получились.
...
Рейтинг: 0 / 0
Форма входа
    #37399057
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
DoCmd.Close acForm, "Form_Welcome"
пойдет?
...
Рейтинг: 0 / 0
Форма входа
    #37399079
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askerli, отобраную форму по должности открывает, но текущую, а именно форму входа не закрывает. То есть все так словно этой строчки вообще нет.
...
Рейтинг: 0 / 0
Форма входа
    #37399101
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя если форма называется Welcome
Код: plaintext
DoCmd.Close acForm, "Welcome"
...
Рейтинг: 0 / 0
Форма входа
    #37399184
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем в целом что у меня получилось:



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Private Sub cmdLogin_Click()
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("Сотрудники")
      With rst
                 .FindFirst ("ID=" & Me.cboCurrentEmployee.Value)
                 If .NoMatch Then
                       MsgBox "Ошибка входа! О данном пользователе нет информации в БД."
                       Exit Sub
                 Else:
                     If Me.Поле_для_пароля.Value <> .Fields("Пароль").Value Then
                         MsgBox "Пароль не правильный или несоответствует имени пользователя"
                          Exit Sub
                     End If
                     DoCmd.Close
                     Select Case .Fields("Должность").Value 'Естественно поле "Должность" должно быть в таб. "Пользователи"
         Case "Директор"
                 DoCmd.OpenForm "Партнеры"
         Case "Координатор по продажам"
                 DoCmd.OpenForm "Накладные"
         Case "Просто ходит за зарплатой"
                 DoCmd.OpenForm "Форма_для_меня_и_босса"
End Select

                 End If
      End With
rst.Close
Set rst = Nothing
End Sub

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

1. Если оставить все поля пусты и сразу же нажать кнопку "ОК", то просто выскакивает ошибка
Run-time error '3077'
Ошибка синтаксиса, пропущен оператор в выражении.
Было бы неплохо, чтобы выскакивало сообщение которое бы еще раз обьяснило пользователю, что нужно выбрать пользователя из списка и ввести пароль. Иначе он может открыть VB и случайно что-то "исправить" в сценарии кнопки, хотелось бы избежать этого.

2. Если выбираешь кого-то из списка и нажимаешь кнопку "Ок" избегая ввода пароля, то все успешно происходит дальше, так словно пароль и вовсе тут не при чем, а конкретно закрывается текущая форма и открывается та, которая привязана к должности. Ну если честно то по логике скрипта все понятно, собака зарыта в операторе "else".

Кто и что предложит чтобы избежать этих промахов? Заранее спасибо.
...
Рейтинг: 0 / 0
Форма входа
    #37399191
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askerliхотя если форма называется Welcome
Код: plaintext
DoCmd.Close acForm, "Welcome"


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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Private Sub cmdLogin_Click()
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("Сотрудники")
      With rst
                 .FindFirst ("ID=" & Me.cboCurrentEmployee.Value)
                 If .NoMatch Then
                       MsgBox "Ошибка входа! О данном пользователе нет информации в БД."
                       Exit Sub
                 Else:
                     If Me.Поле_для_пароля.Value <> .Fields("Пароль").Value Then
                         MsgBox "Пароль не правильный или несоответствует имени пользователя"
                          Exit Sub
                     End If
                     
                     Select Case .Fields("Должность").Value 'Естественно поле "Должность" должно быть в таб. "Пользователи"
         Case "Директор"
                 DoCmd.OpenForm "Партнеры"
         Case "Координатор по продажам"
                 DoCmd.OpenForm "Накладные"
         Case "Просто ходит за зарплатой"
                 DoCmd.OpenForm "Форма_для_меня_и_босса"
End Select
DoCmd.Close acForm, "Welcome"
                 End If
      End With
rst.Close
Set rst = Nothing
End Sub
...
Рейтинг: 0 / 0
Форма входа
    #37399206
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
AleX_X89ё9-тая снизу

Код: plaintext
  docmd.close acform, Me.Name
На сколько я понимаю Name это имя формы, хоть если чесно я думал что
Код: plaintext
Me.
служит как обозначения обьектов открытой к примеру формы...
Ну в общем, банальность, но при имени формы Welcome

нужно было просто так и написать
Код: plaintext
  docmd.close acform, Me.Name
и ничего не выдумывать ))
...
Рейтинг: 0 / 0
Форма входа
    #37399216
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверяйте поле логина на пустое значение... если что-то есть, то дальше проверяйте пароль не только на совпадение, но и на Null ... обязаны справиться, не трудно же...
...
Рейтинг: 0 / 0
Форма входа
    #37399228
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
AleX_X89только теперь получается эту команду нужно вставлять после отбора , то есть в целом выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
         Case "Директор"
                 DoCmd.OpenForm "Партнеры"
         Case "Координатор по продажам"
                 DoCmd.OpenForm "Накладные"
         Case "Просто ходит за зарплатой"
                 DoCmd.OpenForm "Форма_для_меня_и_босса"
End Select
DoCmd.Close acForm, "Welcome"
                 End If
      End With
rst.Close
Set rst = Nothing
End Sub

тоже - совсем не обязательно,
вы видимо думаете, что если закрыть форму, её код (который начал выполнение) уже не выполнится ? - это не так
...
Рейтинг: 0 / 0
Форма входа
    #37399321
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ётоже - совсем не обязательно,
вы видимо думаете, что если закрыть форму, её код (который начал выполнение) уже не выполнится ? - это не так
нет я так не думал) Просто раньше когда перебирал варианты и использовал команду
Код: plaintext
DoCmd.Close
после отбора, то она так как закрывает текущее окно, закрывала форму которую мне и нужно было открыть и на практике по клику кнопки "ОК" по сути ничего не происходило. Поэтому там действительно имело значение где написать эту строчку.
Но если бы я думал
ёчто если закрыть форму, её код (который начал выполнение) уже не выполнится
то я бы не ставил команду закрыть форму перед отбором.

Но за разьяснение спасибо. Так как если указать, что именно закрывать уже не важно в каком порядке оно будет идти по сценарию выполнения.
...
Рейтинг: 0 / 0
Форма входа
    #37399365
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askerliпроверяйте поле логина на пустое значение... если что-то есть, то дальше проверяйте пароль не только на совпадение, но и на Null ... обязаны справиться, не трудно же...

я в общем-то попробовал добавить двигаясь логикой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Sub cmdLogin_Click()
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("Сотрудники")
      With rst
                 If Me.cboCurrentEmployee.Value = Null Then
                       MsgBox "Ошибка входа! Выберите пользователя."
                       Exit Sub
                 Else:
                 .FindFirst ("ID=" & Me.cboCurrentEmployee.Value)
                 If .NoMatch Then
                       MsgBox "Ошибка входа! О данном пользователе нет информации в БД."
                       Exit Sub
                 Else:
                     If Me.Поле_для_пароля.Value <> .Fields("Пароль").Value Then
                         MsgBox "Пароль не правильный или несоответствует имени пользователя"
                          Exit Sub
                     End If
                     DoCmd.Close
                     Select Case .Fields("Должность").Value 'Естественно поле "Должность" должно быть в таб. "Пользователи"
         Case "Директор"
                 DoCmd.OpenForm "Партнеры"
         Case "Координатор по продажам"
                 DoCmd.OpenForm "Накладные"
         Case "Просто ходит за зарплатой"
                 DoCmd.OpenForm "Форма_для_меня_и_босса"
End Select

                 End If
                 End If
      End With
rst.Close
Set rst = Nothing
End Sub

Но при пустом поле вместо того, чтобы выдать текстовое сообщение с указанным текстом, выскакивает ошибка:
Run-time error '3077'
Ошибка синтаксиса (пропущен оператор) в выражении.
При просмотре в VB указывает на строчку
Код: plaintext
                 .FindFirst ("ID=" & Me.cboCurrentEmployee.Value)
...
Рейтинг: 0 / 0
Форма входа
    #37399376
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
AleX_X89,

Код: plaintext
1.
2.
'                 If Me.cboCurrentEmployee.Value = Null Then
                 If isnull(Me.cboCurrentEmployee.Value) Then
...
Рейтинг: 0 / 0
Форма входа
    #37399384
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это
Код: plaintext
If Me.cboCurrentEmployee.Value = Null Then
замените на
Код: plaintext
If IsNull(Me.cboCurrentEmployee.Value) Then
...
Рейтинг: 0 / 0
Форма входа
    #37399390
1109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AleX_X89Форма входа нужна для удобства юзверов и чтобы не нагружать их лишней информацией.

читать про Windows autentification
...
Рейтинг: 0 / 0
Форма входа
    #37399393
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ё
Код: plaintext
1.
2.
'                 If Me.cboCurrentEmployee.Value = Null Then
                 If isnull(Me.cboCurrentEmployee.Value) Then


Спасибо большое! Именно это мне и нужно было) Просто не знал правила синтаксиса.

Вот в итоге что получилось, все работает, всем спасибо!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Private Sub cmdLogin_Click()
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("Сотрудники")
      With rst
                 If IsNull(Me.cboCurrentEmployee.Value) Then
                       MsgBox "Ошибка входа! Выберите пользователя."
                       Exit Sub
                 Else:
                 .FindFirst ("ID=" & Me.cboCurrentEmployee.Value)
                 If .NoMatch Then
                       MsgBox "Ошибка входа! О данном пользователе нет информации в БД."
                       Exit Sub
                 Else:
                     If Me.Поле_для_пароля.Value <> .Fields("Пароль").Value Then
                         MsgBox "Пароль не правильный или несоответствует имени пользователя"
                          Exit Sub
                     End If
                     If IsNull(Me.Поле_для_пароля.Value) Then
                         MsgBox "Вы не ввели пароль!"
                          Exit Sub
                     End If
                     DoCmd.Close
                     Select Case .Fields("Должность").Value 'Естественно поле "Должность" должно быть в таб. "Пользователи"
         Case "Директор"
                 DoCmd.OpenForm "Партнеры"
         Case "Координатор по продажам"
                 DoCmd.OpenForm "Накладные"
         Case "Просто ходит за зарплатой"
                 DoCmd.OpenForm "Форма_для_меня_и_босса"
End Select
                 End If
                 End If
      End With
rst.Close
Set rst = Nothing
End Sub
...
Рейтинг: 0 / 0
Форма входа
    #37399417
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для информации... после Else двоеточие ставить не нужно
...
Рейтинг: 0 / 0
Форма входа
    #37399453
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
askerliдля информации... после Else двоеточие ставить не нужно
спасибо)
...
Рейтинг: 0 / 0
Форма входа
    #37399488
Осьменоги
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AleX_X89
Код: plaintext
MsgBox "Пароль не правильный или несоответствует имени пользователя"

бзз-з-з
Код: plaintext
MsgBox "Пароль неправильный или не соответствует имени пользователя"

Код: plaintext
1.
2.
 \/
>00<
 /\
...
Рейтинг: 0 / 0
Форма входа
    #37399531
AleX_X89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОсьменогиAleX_X89
Код: plaintext
MsgBox "Пароль не правильный или несоответствует имени пользователя"

бзз-з-з
Код: plaintext
MsgBox "Пароль неправильный или не соответствует имени пользователя"

Код: plaintext
1.
2.
 \/
>00<
 /\


Этот текст я просто скопировал) а на ошибки просто не обратил внимания) но спасибо
...
Рейтинг: 0 / 0
Форма входа
    #37404616
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleX_X89Ошибка синтаксиса, пропущен оператор в выражении.
В поле со списком "Имя_пользователя" в свойствах по умолчанию ставите значение Null. А еще лучше в свойстве "Ограничится списком" поставить "Да". В поле "Пароль" ставите тоже значение по умолчанию Null.
На нажатие кнопки перед выполнением её основного кода (открытия формы или что она там делает) прописывайте:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub CommandButton_Click()
If IsNull(Me.Имя_пользователя.Value) = True Then
      MsgBox "Вы не выбрали пользователя!", vbExclimation, "Ошибка входа"
      Exit Sub
End If

If IsNull(Me.Пароль.Value) = True Then
      MsgBox "Вы не ввели пароль!", vbExclimation, "Ошибка входа"
      Exit Sub
End If

.....
.....
.....

End Sub
...
Рейтинг: 0 / 0
Форма входа
    #37404619
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleX_X89,

Прикольная форма приветствия, кстати... Особенно: ... "под которым вы пытайтесь войти"...
...
Рейтинг: 0 / 0
Форма входа
    #37772197
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
вот я выбрал такой код,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Private Sub Кнопка108_Click()
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("Працівники")
      With rst
                 If IsNull(Me.cboCurrentEmployee.Value) Then
                       MsgBox "Ошибка входа! Выберите пользователя."
                       Exit Sub
                 Else:
                 .FindFirst ("Login" & Me.cboCurrentEmployee.Value)
                 If .NoMatch Then
                       MsgBox "Ошибка входа! О данном пользователе нет информации в БД."
                       Exit Sub
                 Else:
                     If Me.PolePassword.Value <> .Fields("Password").Value Then
                         MsgBox "Пароль не правильный или несоответствует имени пользователя"
                          Exit Sub
                     End If
                     If IsNull(Me.PolePassword.Value) Then
                         MsgBox "Вы не ввели пароль!"
                          Exit Sub
                     End If
                     DoCmd.Close
                     
                 End If
                 End If
      End With
rst.Close
Set rst = Nothing
End Sub



и мне выдает ошибку:
Run-time error '3251':
Операция не поддерживается для объектов этого типа.

подскажите пожалуйста, где я мог сделал ошибку? ((
Спасибо.
...
Рейтинг: 0 / 0
Форма входа
    #37772207
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NOOBик
и мне выдает ошибку:
Run-time error '3251':
Операция не поддерживается для объектов этого типа.

подскажите пожалуйста, где я мог сделал ошибку? ((
Спасибо.
а на какой строке эта ошибка ?

тут, как минимум,
Код: vbnet
1.
.FindFirst ("Login" & Me.cboCurrentEmployee.Value)


х-рь написана ...
...
Рейтинг: 0 / 0
Форма входа
    #37772209
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112,

да именно там((
...
Рейтинг: 0 / 0
Форма входа
    #37772217
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112
Код: vbnet
1.
.FindFirst ("Login" & Me.cboCurrentEmployee.Value)


х-рь написана ...

х-рь ?(((
...
Рейтинг: 0 / 0
Форма входа
    #37772230
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NOOBикqwerty112
Код: vbnet
1.
.FindFirst ("Login" & Me.cboCurrentEmployee.Value)


х-рь написана ...

х-рь ?(((
она самая ! :)
FindFirst - F1
...
Рейтинг: 0 / 0
Форма входа
    #37772240
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112FindFirst - F1
Даже в этом самом топике есть правильное обращение к FindFirst. Но NOOBик, просто переписывая код, допустил ошибку. И прав qwerty112, посмотрев F1 ("источник знаний"), такой описки не допустишь.
...
Рейтинг: 0 / 0
Форма входа
    #37777182
Фотография Wipeout2097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NOOBик
Код: vbnet
1.
.FindFirst ("Login" & Me.cboCurrentEmployee.Value)



.FindFirst ("Login=" & Me.cboCurrentEmployee.Value)
...
Рейтинг: 0 / 0
Форма входа
    #37879635
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все что выше написано и делал, в принципе, мне кажется)
...
Рейтинг: 0 / 0
Форма входа
    #37879678
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wipeout2097NOOBик
Код: vbnet
1.
.FindFirst ("Login" & Me.cboCurrentEmployee.Value)



.FindFirst ("Login=" & Me.cboCurrentEmployee.Value)
Обычно логин-то - текстовый.
...
Рейтинг: 0 / 0
Форма входа
    #37905858
stasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пож, почему выдает ошибку в FindFirste ("Операция не поддерживается для объектов этого типа")

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Сотрудники")

With rst


If IsNull(Me.login.Value) Then
MsgBox "Выберите пользователя!"
Exit Sub
Else

.FindFirst ("position =" & Me.login.Value)
If .NoMatch Then
MsgBox "Нет такого пользователя!"
Exit Sub
Else
If Me.login.Value <> .Fields("pass").Value Then
MsgBox "Неверный логин или пароль"
Exit Sub
End If
End If

Select Case .Fields("position").Value
Case "user"
DoCmd.OpenForm "user1"
Case "zam"
DoCmd.OpenForm "Form2"
Case "nach"
DoCmd.OpenForm "Form3"

End Select
End If



End With


rst.Close
Set rst = Nothing
...
Рейтинг: 0 / 0
Форма входа
    #37905887
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Set rst = CurrentDb.OpenRecordset("select * from Сотрудники")


или
Код: vbnet
1.
Set rst = CurrentDb.OpenRecordset("врачи", dbOpenDynaset)


или
OpenRecordset F1

и будет вам счастье.
...
Рейтинг: 0 / 0
Форма входа
    #37905900
stasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wipeout2097,
подскажите пож, такая же ошибка в FindFirst...

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Сотрудники")

With rst


If IsNull(Me.login.Value) Then
MsgBox "Выберите пользователя!"
Exit Sub
Else

.FindFirst ("position =" & Me.login.Value)
If .NoMatch Then
MsgBox "О данном пользователе нет информации"
Exit Sub
Else
If Me.login.Value <> .Fields("pass").Value Then
MsgBox "Неверный логин или пароль!"
Exit Sub
End If
End If

Select Case .Fields("position").Value
Case "user"
DoCmd.OpenForm "user1"
Case "zam"
DoCmd.OpenForm "Form2"
Case "nach"
DoCmd.OpenForm "Form3"

End Select
End If

End With


rst.Close
Set rst = Nothing
...
Рейтинг: 0 / 0
Форма входа
    #37905920
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stasa,

не понял, моё сообщение высветилось белым шрифтом или вам нужно пример БД приложить?
...
Рейтинг: 0 / 0
Форма входа
    #37905932
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alvk,

шож
...
Рейтинг: 0 / 0
Форма входа
    #37906016
stasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alvk,
спасибо, но счастье только снится...
теперь не распознаются значения из поля position в select case(
...
Рейтинг: 0 / 0
Форма входа
    #37906546
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stasa,

значит не по тому столбцу в поле со списком case делаете - элементарно.
...
Рейтинг: 0 / 0
Форма входа
    #37953029
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
Добрый день всем. Я извиняюсь, что поднимаю эту тему снова, но я перепробовал все возможные и не возможные варианты
". FindFirst (" Login = "& Me.cboCurrentEmployee.Value)"
знак равенства у меня стоял, может то проблема что у меня Акс 2010 стоит??
Спасибо на перед
...
Рейтинг: 0 / 0
Форма входа
    #37953038
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NOOBик
Код: vbnet
1.
2.
3.
4.
Добрый день всем. Я извиняюсь, что поднимаю эту тему снова, но я перепробовал все возможные и не возможные варианты
". FindFirst (" Login = "& Me.cboCurrentEmployee.Value)"
знак равенства у меня стоял, может то проблема что у меня Акс 2010 стоит??
Спасибо на перед


и что ?
...
Рейтинг: 0 / 0
Форма входа
    #37953086
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NOOBик,
Слабо посмотреть help про синтаксис FindFirst.
Не нужен ли еще один символ конкатенации?
...
Рейтинг: 0 / 0
Форма входа
    #37953114
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

смотрел Хелпик((( не помогло и не пойму что делаетсо-то(((
...
Рейтинг: 0 / 0
Форма входа
    #37953128
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112,

Если можете подскажите пожалуйста где моя ошибка, не могу понять. спасибо
...
Рейтинг: 0 / 0
Форма входа
    #37953141
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NOOBикqwerty112,

Если можете подскажите пожалуйста где моя ошибка, не могу понять. спасибо
пока так - 12489898

окажется что поле Login текстовое - возвращайтесь
...
Рейтинг: 0 / 0
Форма входа
    #37953149
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NOOBик,
Код: vbnet
1.
набор.FindFirst "login='" & условие & "'"
...
Рейтинг: 0 / 0
Форма входа
    #37953160
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112NOOBикqwerty112,

Если можете подскажите пожалуйста где моя ошибка, не могу понять. спасибо
пока так - 12489898

окажется что поле Login текстовое - возвращайтесь

Все так и есть
Код: vbnet
1.
2.
Else:
                 .FindFirst ("Login=" & Me.cboCurrentEmployee.Value)
...
Рейтинг: 0 / 0
Форма входа
    #37953166
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuNOOBик,
Код: vbnet
1.
набор.FindFirst "login='" & условие & "'"



Ошибка "3251" (((
...
Рейтинг: 0 / 0
Форма входа
    #37953175
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NOOBик,
а что есть наборЗаписей?
...
Рейтинг: 0 / 0
Форма входа
    #37953863
NOOBик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А никто не пробовал эту форму входа на Access 2010??
...
Рейтинг: 0 / 0
Форма входа
    #38290990
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сообщение SPOR удалено как офтоп.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Форма входа
    #38669894
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, уважаемые.
подскажите пожалуйста, как пи использовании данного входа, имя пользователя, передать на форму которая запускается после ввода логинапароля?
Типа видно что бы было что за пользователь залогинился.
...
Рейтинг: 0 / 0
Форма входа
    #38669902
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kvitnitskiy,

пример
...
Рейтинг: 0 / 0
Форма входа
    #38684287
Антон68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, где задать глобальную переменную, которой кнопкой входа присваиваем значение ИД пользователя, дабы пользоваться на остальных вкладках?
...
Рейтинг: 0 / 0
Форма входа
    #38684369
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую хранить "неубиваемые" глобальные переменные в полях скрытой формы, живущей все время работы приложения. Можно сделать ее и визувлизируемой, если красиво оформить их в виде неких глобальных параметров.

Можно пойти дальше - сделать удобный люк для разработчика. Если пользователь опознан как разработчик, то поле "Пользователь" для него будет превращаться в комбобокс со списком всех зарегистрипрованных пользователей. Он может "притвориться" любым пользователем и опробовать работу системы с теми или иными ограничениями.
...
Рейтинг: 0 / 0
Форма входа
    #38684391
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-ЛРекомендую хранить "неубиваемые" глобальные переменные в полях скрытой формы, живущей все время работы приложения. Можно сделать ее и визувлизируемой, если красиво оформить их в виде неких глобальных параметров.

Идея хорошая, только наверное эту форму нужно делать наоборот страшной, непонятной и с пугающими надписями типа "Скрой меня падл(), а то отформатирую диск С:\".... вдруг какой то умник догадается нажать Окно -> Отобразить -> Имя (подпись) скрытой формы.... не все же убирают стандартные панели инструментов.... может получится люк для всех подряд... может огласите усю тех-логию ???
...
Рейтинг: 0 / 0
Форма входа
    #38688585
Антон68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для начала выбрал процедуру хранения в публичной функции. Однако данный вариант имеет незначительный недостаток: при возникновении ошибки функция обнуляется и нет возможности запомнить последнее введенное значение.
Для исследования варианта альтернативы ищу способ записи в таблицу значений. Он мне кажется более практичным.

+ прошу содействия в реализации задачи доступа к кнопкам формы. Есть таблица с именами сотрудников и реализован парольный доступ к стартовой форме. Каждому сотруднику прописана роль (стартовая форма) и возможно дополнить флажками доступа к определенным кнопкам формы.
Так вот сам вопрос: можно ли реализовать возможность отображения кнопок форм в зависимости от прав (значения поля доступа сотрудника)? И как это можно сделать?
...
Рейтинг: 0 / 0
Форма входа
    #38688744
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон68можно ли реализовать возможность отображения кнопок форм в зависимости от прав

1. В конструкторе ставишь кнопкам Вывод на экран - Нет
2. В событии формы Open в зависимости от прав доступа делаешь нужным кнопкам:
Me!Кнопка1.Visible = True
...
Рейтинг: 0 / 0
Форма входа
    #38690196
Антон68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все получилось спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Форма входа
    #39598297
mround
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите с кодом. Форма входа работает, пароли проверяет, но вместо открытия форм согласно назначенных прав пользователя просто закрывается форма входа и ничего не открывается. В чём может быть проблема?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Private Sub cmdLogin_Click() 'cmdLogin - &#253;&#242;&#238; &#232;&#236;&#255; &#234;&#237;&#238;&#239;&#234;&#232; &#228;&#235;&#255; &#234;&#238;&#242;&#238;&#240;&#238;&#233; &#239;&#232;&#248;&#229;&#242;&#241;&#255; &#241;&#246;&#229;&#237;&#224;&#240;&#232;&#233;
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("&#241;&#238;&#242;&#240;&#243;&#228;&#237;&#232;&#234;&#232;", dbOpenDynaset) '&#241;&#238;&#242;&#240;&#243;&#228;&#237;&#232;&#234;&#232; - &#243;&#234;&#224;&#231;&#251;&#226;&#224;&#229;&#236; &#241; &#234;&#224;&#234;&#238;&#233; &#242;&#224;&#225;&#235;&#232;&#246;&#229;&#233; &#225;&#243;&#228;&#229;&#242; &#240;&#224;&#225;&#238;&#242;&#224;&#242;&#252; &#241;&#246;&#229;&#237;&#224;&#240;&#232;&#233;
With rst
If IsNull(Me.&#212;&#200;&#206;) Then '&#211;&#241;&#235;&#238;&#226;&#232;&#229; &#229;&#241;&#235;&#232; &#239;&#238;&#235;&#229; &#226;&#251;&#239;&#224;&#228;&#224;&#254;&#249;&#229;&#227;&#238; &#241;&#239;&#232;&#241;&#234;&#224; &#237;&#224; &#236;&#238;&#236;&#229;&#237;&#242; &#234;&#235;&#232;&#234;&#224; &#239;&#243;&#241;&#242;&#238;&#229;, &#242;&#238;
MsgBox "&#206;&#248;&#232;&#225;&#234;&#224; &#226;&#245;&#238;&#228;&#224;! &#194;&#251;&#225;&#229;&#240;&#232;&#242;&#229; &#239;&#238;&#235;&#252;&#231;&#238;&#226;&#224;&#242;&#229;&#235;&#255;."
Exit Sub
Else:
.FindFirst ("&#202;&#238;&#228;&#209;&#238;&#242;&#240;&#243;&#228;&#237;&#232;&#234;&#224;=" & Me.&#212;&#200;&#206;.Value) '&#197;&#241;&#235;&#232; &#239;&#238;&#235;&#229; &#237;&#229; &#239;&#243;&#241;&#242;&#238;&#229;, &#242;&#238; &#239;&#240;&#238;&#232;&#231;&#226;&#238;&#228;&#232;&#242;&#241;&#255; &#239;&#238;&#241;&#234; &#237;&#224; &#241;&#238;&#238;&#242;&#226;&#229;&#242;&#241;&#242;&#226;&#232;&#229; &#241; &#228;&#224;&#237;&#237;&#251;&#236;&#232; &#242;&#224;&#225;&#235;&#232;&#246;&#251; &#209;&#238;&#242;&#240;&#243;&#228;&#237;&#232;&#234;&#232;
If .NoMatch Then ' &#197;&#241;&#235;&#232; &#237;&#229;&#242; &#241;&#238;&#226;&#239;&#224;&#228;&#229;&#237;&#232;&#233;, &#242;&#238;
MsgBox "&#206;&#248;&#232;&#225;&#234;&#224; &#226;&#245;&#238;&#228;&#224;! &#206; &#228;&#224;&#237;&#237;&#238;&#236; &#239;&#238;&#235;&#252;&#231;&#238;&#226;&#224;&#242;&#229;&#235;&#229; &#237;&#229;&#242; &#232;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#232;&#232; &#226; &#193;&#196;."
Exit Sub
Else:
If Me.&#207;&#238;&#235;&#229;_&#228;&#235;&#255;_&#239;&#224;&#240;&#238;&#235;&#255;.Value <> .Fields("&#239;&#224;&#240;&#238;&#235;&#252;").Value Then '&#211;&#241;&#235;&#238;&#226;&#232;&#229; &#228;&#235;&#255; &#241;&#240;&#224;&#226;&#237;&#229;&#237;&#232;&#255; &#226;&#226;&#229;&#228;&#229;&#237;&#237;&#251;&#245; &#228;&#224;&#237;&#237;&#251;&#245; &#226; &#239;&#238;&#235;&#229; &#228;&#235;&#255; &#239;&#224;&#240;&#238;&#235;&#255; &#241; &#234;&#238;&#235;&#238;&#237;&#234;&#238;&#233; &#239;&#224;&#240;&#238;&#235;&#252; &#226; &#242;&#224;&#225;&#235;&#232;&#246;&#229; "&#209;&#238;&#242;&#240;&#243;&#228;&#237;&#232;&#234;&#232;"
MsgBox "&#207;&#224;&#240;&#238;&#235;&#252; &#237;&#229;&#239;&#240;&#224;&#226;&#232;&#235;&#252;&#237;&#251;&#233; &#232;&#235;&#232; &#237;&#229; &#241;&#238;&#238;&#242;&#226;&#229;&#242;&#241;&#242;&#226;&#243;&#229;&#242; &#232;&#236;&#229;&#237;&#232; &#239;&#238;&#235;&#252;&#231;&#238;&#226;&#224;&#242;&#229;&#235;&#255;"
Exit Sub
End If
If IsNull(Me.&#207;&#238;&#235;&#229;_&#228;&#235;&#255;_&#239;&#224;&#240;&#238;&#235;&#255;.Value) Then ' &#211;&#241;&#235;&#238;&#226;&#232;&#229; &#228;&#235;&#255; &#238;&#248;&#232;&#225;&#234;&#232; &#226; &#241;&#235;&#243;&#247;&#224;&#229;, &#229;&#241;&#235;&#232; &#239;&#238;&#235;&#229; &#228;&#235;&#255; &#239;&#224;&#240;&#238;&#235;&#255; &#237;&#229; &#231;&#224;&#239;&#238;&#235;&#237;&#229;&#237;&#237;&#238;&#229;
MsgBox "&#194;&#251; &#237;&#229; &#226;&#226;&#229;&#235;&#232; &#239;&#224;&#240;&#238;&#235;&#252;!"
Exit Sub
End If
DoCmd.Close '&#202;&#238;&#236;&#224;&#237;&#228;&#224; &#237;&#224; &#231;&#224;&#234;&#240;&#251;&#242;&#232;&#229; &#242;&#229;&#234;&#243;&#249;&#229;&#233; &#244;&#238;&#240;&#236;&#251;, &#226; &#228;&#224;&#237;&#237;&#238;&#236; &#241;&#235;&#243;&#247;&#224;&#229; &#244;&#238;&#240;&#236;&#251; &#226;&#245;&#238;&#228;&#224;
 Select Case .Fields("&#239;&#240;&#224;&#226;&#224;").Value
 Case "&#192;&#228;&#236;&#232;&#237;"
 DoCmd.OpenForm "&#192;&#228;&#236;&#232;&#237;&#241;&#234;&#224;&#255;"
 Case "&#207;&#240;&#238;&#228;&#226;&#232;&#237;&#243;&#242;&#251;&#233;"
 DoCmd.OpenForm "&#207;&#240;&#238;&#228;&#226;&#232;&#237;&#243;&#242;&#251;&#233;"
 Case "&#207;&#229;&#228;&#224;&#227;&#238;&#227;"
 DoCmd.OpenForm "&#212;&#238;&#240;&#236;&#224;_&#228;&#235;&#255;_&#239;&#229;&#228;&#224;&#227;&#238;&#227;&#238;&#226;" '&#238;&#242;&#225;&#238;&#240; &#239;&#238; &#239;&#238;&#235;&#254; &#239;&#240;&#224;&#226;&#224; &#232; &#234;&#238;&#236;&#224;&#237;&#228;&#224; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#229; &#243;&#234;&#224;&#231;&#224;&#237;&#238;&#233; &#244;&#238;&#240;&#236;&#251; &#228;&#235;&#255; &#241;&#238;&#238;&#242;&#226;&#229;&#242;&#241;&#226;&#243;&#254;&#249;&#229;&#233; &#228;&#238;&#235;&#230;&#237;&#238;&#241;&#242;&#232;
End Select
 End If
 End If
 End With
rst.Close
Set rst = Nothing
End Sub
...
Рейтинг: 0 / 0
Форма входа
    #39598305
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кровь из глаз. Переключайтесь на русскую раскладку перед вставкой. Попробуйте еще раз
...
Рейтинг: 0 / 0
Форма входа
    #39598325
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinКровь из глаз. Переключайтесь на русскую раскладку перед вставкой. Попробуйте еще раз
Раскладка ничего не даст. Это глюк или фича Access (с какой стороны глянуть). Если создаёшь мастером кнопку на открытие формы, а форма имеет русское название, то как раз такая картинка и получается. И пофик, что стоит локализованный Access. Не хочет он понимать русские имена.
...
Рейтинг: 0 / 0
Форма входа
    #39598608
mround
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уже разобрался. Хотел исправить пост, но не смог))) проще удалить модератору. А по проблеме, как оказалось сам переименовал ярлык а не саму форму, поэтому код OpenForm и не находил нужную форму для открытия. Сейчас всё работает. Но вот мне интересно, как реализовать следующие задачи:
1. Создаю базу для учреждения дополнительного образования. необходимо, чтобы педагогу по его паролю открывались только данные его объединения (список детей 1 педагога) в общей таблице, где есть все дети. Возможно ли это, либо делать таблицы для каждого объединения в отдельности? Тогда слишком много форм будет... а этого не хочется.
2. можно ли вести лог изменений общих таблиц, чтобы узнать, кто какие изменения внёс?
...
Рейтинг: 0 / 0
Форма входа
    #39598639
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mround2. можно ли вести лог изменений общих таблиц, чтобы узнать, кто какие изменения внёс?

Можно, причем организовать это можно особо и не прибегая к VBA. Попросили как то сделать пример небольшой, как можно проще. В общем есть главная таблица и таблица куда логи записываются. Снимает в общем имя юзера и на надлежащее действие добавляет в таблицу.
Я там пример на событие "добавление" не допилил, но это пару секунд поправить. Посмотрите, действительно все элементарно. Можно вешать как на события формы, так и на триггеры самих таблиц, которые появились начиная вроде с 2010го аксесса.
...
Рейтинг: 0 / 0
Форма входа
    #39598751
mround
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ЛаловМожно, причем организовать это можно особо и не прибегая к VBA. Попросили как то сделать пример небольшой, как можно проще. В общем есть главная таблица и таблица куда логи записываются. Снимает в общем имя юзера и на надлежащее действие добавляет в таблицу.
Я там пример на событие "добавление" не допилил, но это пару секунд поправить. Посмотрите, действительно все элементарно. Можно вешать как на события формы, так и на триггеры самих таблиц, которые появились начиная вроде с 2010го аксесса.

Спасибо большое. Попробую сделать на вашем примере. А по поводу моего первого вопроса что-нибудь можете сказать?
...
Рейтинг: 0 / 0
Форма входа
    #39599281
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mround]Сергей ЛаловА по поводу моего первого вопроса что-нибудь можете сказать?

Есть у меня написанный рабочий пример, но он слишком объемный и внедрен в действующую БД.
Как в аксессовском исполнении при помощи формы ввода,аутентификации входящего пользователя (все построено вокруг функции
environ("USERPROFILE"). Если интересно, пишите в личку, я там вас попытаюсь отговорить от аутентификации в чистом аксессе)) и расскажу о полноценном использовании логина и пароля в связке MS ACCESS + MySQL server.
...
Рейтинг: 0 / 0
Форма входа
    #39599423
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня в нормальной сетевой программе используется Windows - идентификация пользователь. И никаких лишних движений. При запуске Access программы, происходит запрос, под каким логином пользователь вошел в Windows, и в зависимости от этого назначаются все привилегии.
...
Рейтинг: 0 / 0
Форма входа
    #39599431
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossА у меня в нормальной сетевой программе используется Windows - идентификация пользователь. И никаких лишних движений. При запуске Access программы, происходит запрос, под каким логином пользователь вошел в Windows, и в зависимости от этого назначаются все привилегии.
Интересно, то есть у вас родная аутентификация пользователя в системе. А как вы снимаете значение логина при входе?

Есть малоизвестная в общем то универсальная функция в VBA , которая основные параметры пользователя окружения передает, environ("USERNAME"), environ("USERPROFILE") и так далее по используемым аргументам функции.

При открытии проекта в аксесс идет проверка текущего пользователя, сопоставление с наличием его в специальной созданной таблице пользователи. Если нет, то проект закрывается, если есть, то снимается значение дополнительного поля в таблице, к примеру поле "тип доступа". Значение передается в глобальную переменную, и при открытии каких либо форм, выполнении процедур выполняется тот или иной сценарий,в зависимости от значения этой переменной.
...
Рейтинг: 0 / 0
Форма входа
    #39599484
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловJossА у меня в нормальной сетевой программе используется Windows - идентификация пользователь. И никаких лишних движений. При запуске Access программы, происходит запрос, под каким логином пользователь вошел в Windows, и в зависимости от этого назначаются все привилегии.
Интересно, то есть у вас родная аутентификация пользователя в системе. А как вы снимаете значение логина при входе?

Есть малоизвестная в общем то универсальная функция в VBA , которая основные параметры пользователя окружения передает, environ("USERNAME"), environ("USERPROFILE") и так далее по используемым аргументам функции.

При открытии проекта в аксесс идет проверка текущего пользователя, сопоставление с наличием его в специальной созданной таблице пользователи. Если нет, то проект закрывается, если есть, то снимается значение дополнительного поля в таблице, к примеру поле "тип доступа". Значение передается в глобальную переменную, и при открытии каких либо форм, выполнении процедур выполняется тот или иной сценарий,в зависимости от значения этой переменной.
Вы полностью правы. Есть внутренняя таблица, в которой прописаны соответствия логина Windows конкретному пользователю и его привилегии. Точнее, ссылка на таблицу, где прописаны определённые привилегии группы, к которой принадлежит пользователь.
У меня все рабочие программы организованы по такому принципу. Пользователям не надо каждый раз забивать свой логин и пароль. Это их откровенно бесит. Зато ведётся протокол, кто, что сделал, да ещё с какого компьютера.
А для определения имени пользователя я использую вот это Название компьютера, имя пользователя без API
...
Рейтинг: 0 / 0
Форма входа
    #39599489
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mround...
2. можно ли вести лог изменений общих таблиц, чтобы узнать, кто какие изменения внёс?
Как это организовано у меня.
В каждой таблице, с которой работают пользователи, есть служебные поля.
1. Признак удаления. У меня записи не удаляются, а помечаются как удалённые. Так легко отследить, кто удалил запись, и что в ней было. И восстановить ошибочно удалённую.
2. Добавление. Два поля. Код оператора и дата добавления
3. Удаление. Два поля. Код оператора и дата удаления. Запись не удаляется физически, а только помечается как удалённая.
2. Изменение. Тут сложнее. Всё зависит от того, что Вам надо протоколировать. Просто признак изменения или что именно изменилось. Если просто последнее изменение, то два поля. Код оператора и дата изменения. А если надо контролировать, что изменилось, то и тут есть два пути
а) создаётся таблица для изменённых записей и перед изменением запись скидывается в ту таблицу с временем и кодом того, кто её изменил.
б) изменённые записи хранятся в той же таблице, что и исходные, но исходные имеют признак "устаревшие"
И тот и тот способ имеет как свои достоинства, так и недостатки.
...
Рейтинг: 0 / 0
85 сообщений из 85, показаны все 4 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Форма входа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]