Пользовательский контрольный журнал в Access для захвата данных для входа - PullRequest
0 голосов
/ 21 мая 2019

У меня есть экран входа, который я встроил в Access, мне нужно, чтобы имя пользователя (которое является столбцом в таблице «Сотрудник»), было сохранено в таблице «Аудит», которую я построил для хранения изменений, которые происходят вDB.

При входе в систему с пользовательского экрана входа в него должно быть записано имя пользователя (возможно, tempvars), и оно должно оставаться доступным до тех пор, пока пользователь не закроет программу, то есть во время сеанса (войдя в систему, как, скажем, user_x)) и я также хочу, чтобы это имя пользователя было записано в таблице аудита.

Я получил код из Интернета, чтобы зафиксировать изменения, которые происходят в БД, но он использует утилиту входа в систему Access.Я хочу изменить его, чтобы получать данные для входа в систему из моей пользовательской таблицы входа в систему после входа пользователя в систему.

Const cDQ As String = """"
Sub AuditTrail(frm As Form, recordid As Control)
  'Track changes to data.
  'recordid identifies the pk field's corresponding
  'control in frm, in order to id record.
  Dim ctl As Control
  Dim varBefore As Variant
  Dim varAfter As Variant
  Dim strControlName As String
  Dim strSQL As String
  On Error GoTo ErrHandler
  'Get changed values.
  For Each ctl In frm.Controls
    With ctl
    'Avoid labels and other controls with Value property.
    If .ControlType = acTextBox Then
      If .Value  .OldValue Then
        varBefore = .OldValue
        varAfter = .Value
        strControlName = .Name
        'Build INSERT INTO statement.
        strSQL = "INSERT INTO " _
           & "Audit (EditDate, User, RecordID, SourceTable, " _
           & " SourceField, BeforeValue, AfterValue) " _
           & "VALUES (Now()," _
           & cDQ & Environ("username") & cDQ & ", " _
           & cDQ & recordid.Value & cDQ & ", " _
           & cDQ & frm.RecordSource & cDQ & ", " _
           & cDQ & .Name & cDQ & ", " _
           & cDQ & varBefore & cDQ & ", " _
           & cDQ & varAfter & cDQ & ")"
        'View evaluated statement in Immediate window.
        Debug.Print strSQL
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
      End If
    End If
    End With
  Next
  Set ctl = Nothing
  Exit Sub

ErrHandler:
  MsgBox Err.Description & vbNewLine _
   & Err.Number, vbOKOnly, "Error"
End Sub

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

Что я должен использовать вместо

& cDQ & Environ("username") & cDQ & ", " _

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

1 Ответ

0 голосов
/ 22 мая 2019

Если вы хотите использовать имя пользователя, которое пользователь вводит в форму входа в систему, просто замените Environ("username") значением текстового поля в форме входа в систему. Допустим, текстовое поле в вашей форме входа в систему называется txtUserName, а затем просто замените код следующим:

= & cDQ & Me!txtUserName.Value & cDQ & ", "

Me! относится к вашей форме, в которой исполняется ваш код (форма входа в систему).

...