2015-08-06 3 views
1

Я работаю над базами продаж CRM в MS access 2010. Я пытаюсь автоматически заполнять имена пользователей в различных формах.Автоматическое заполнение идентификатора пользователя на основании регистрационной информации

DB загружается на страницу входа, запрашивая имя пользователя и пароль. Имя пользователя задается в таблице Employee, а не на основе входа в Windows. Таблица сотрудников имеет следующие поля (EmpID PK, имя, фамилия, телефон, электронная почта, заметки, название, имя пользователя TEXT, пароль).

У меня есть два стола (контакт с клиентами и лидеры), в которых работник должен «взять на себя ответственность» за деятельность. Я хотел бы поле сотрудника для автоматического занесения в основе того, кто вошел в

Вот код под кнопкой ОК на моей странице входа:.

Private Sub Command1_Click() 
If IsNull(Me.txtUserID) Then 
    MsgBox "Please enter user name.", vbInformation, "User Name Required" 
ElseIf IsNull(Me.txtPassword) Then 
    MsgBox "Please enter password.", vbInformation, "Password Required" 
    Me.txtPassword.SetFocus 
Else 
    'process the job 
    If (IsNull(DLookup("[UserName]", "tblEmployee", "[UserName] ='" & Me.txtUserID.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Then 
     MsgBox "Incorrect user name or password." 
    Else 
     Me.Visible = False 
     DoCmd.OpenForm "frmHome" 
    End If 
End If 
End Sub 

ответ

0

Вы должны либо хранить имена пользователей в глобальную переменную или записать ее во временную таблицу.

Чтобы сохранить его в глобальной переменной просто объявить его в модуле

Dim strUser as String 

Затем измените форму Войти код, как этот

If (IsNull(DLookup("[UserName]", "tblEmployee", "[UserName] ='" & Me.txtUserID.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Then 
    MsgBox "Incorrect user name or password." 
Else 
    Me.Visible = False 
    strUser=Me.txtUserID.Value 
    DoCmd.OpenForm "frmHome" 
End If 

Это имеет недостаток иметь его стоимость упала в любое время происходит отладка/ошибка, которая не обрабатывается. У этого есть потенциал быть быстрым и простым в использовании.

EDIT: Я бы отправился на местный стол лично. Удостоверьтесь, что вы DELETE * FROM tblLocalTableName при закрытии/выходе приложения и при запуске. Если вам нужна помощь в реализации, сообщите мне.

EDIT: Для локальной таблицы создайте таблицу в Access во внешнем файле. Давайте назовем его «tblLocalVars». Первичное ключевое текстовое поле, давайте назовите его «Ключ» и другое текстовое поле, назовем его «Вал». Добавьте строку в эту таблицу, Key = 'LoggedUser' и оставьте Val пустым.

Тогда на форме входа, код будет выглядеть примерно так:

Private Sub Command1_Click() 
If IsNull(Me.txtUserID) Then 
    MsgBox "Please enter user name.", vbInformation, "User Name Required" 
ElseIf IsNull(Me.txtPassword) Then 
    MsgBox "Please enter password.", vbInformation, "Password Required" 
    Me.txtPassword.SetFocus 
Else 
    'process the job 
    If (IsNull(DLookup("[UserName]", "tblEmployee", "[UserName] ='" & Me.txtUserID.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Then 
     MsgBox "Incorrect user name or password." 
    Else 
     CurrentDB.Execute "UPDATE tblLocalVars SET Val='" & Me.txtUserID & "' WHERE Key='LoggedUser'" 
     Me.Visible = False 
     DoCmd.OpenForm "frmHome" 
    End If 
End If 
End Sub 

Теперь, когда вы хотите, чтобы получить текущие пользователи Имя пользователя, вы можете использовать это:

Dlookup("Val","tblLocalVars", "Key='LoggedUser'") 

Теперь вы просто добавьте это в код выхода:

CurrentDB.Execute "UPDATE tblLocalVars SET Val='' WHERE Key='LoggedUser'" 

Убедитесь, что вы добавили этот код в выгрузку событие в вашей форме входа.

+0

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

+0

@zekeinvestor Обновленный ответ – JCro

0

Использование Environ («имя пользователя») вернет значение имени пользователя. Использование среды («userdomain») вернет значение текущего домена пользователей.

В вашем немедленном окне сделать? Окружат («имя пользователя»), чтобы проверить и посмотреть, что вы получите

На форме, где вы хотите, чтобы пользователи взять на себя ответственность, вы можете иметь командную кнопку пользователь нажимает на вы можете получить имя пользователя пользователя из Environ («имя пользователя») и обновить пользователя в качестве владельца в своей таблице.

Нет необходимости в странице входа (если вы не нуждаетесь в дополнительной безопасности), ваше приложение всегда будет знать, кто такой пользователь.

Кроме того, в ваших запросах, которые подают ваши формы, вы можете иметь = Environ («username») в качестве аргумента from из поля имени пользователя, чтобы показать пользователям записи, которыми они владеют.

HTH

Смежные вопросы