Добавление функции в форму пользователя для получения идентификатора пользователя - PullRequest
0 голосов
/ 11 июля 2019

В настоящее время я пытаюсь настроить функцию, которая будет захватывать и добавлять идентификатор пользователя и вводить его в поле «Владелец» после создания записи в моей базе данных MS Access. Проблема, которую я получаю в настоящее время, заключается в том, что она выдает ошибку, когда она достигает строки me!owner = owner в функции.

Я получаю следующую ошибку:

Error Message

Странно то, что этот код работает в той форме, в которой я его использую, а в пользовательской форме - нет. Любая помощь или толчок в правильном направлении будет принята с благодарностью!

Private Sub CheckBox1_Click()
End Sub

Private Sub CheckBox2_Click()
End Sub


Public Property Get IsCancelled() As Boolean
IsCancelled = cancelled
End Property

Private Sub OkButton_Click()
Dim c As MSForms.Control
Dim StrSQL As String


For Each c In Me.Controls
If TypeOf c Is MSForms.CheckBox Then
If c Then
Select Case c.Name
    Case "CheckBox1"
        'Monday
        Hide
        'Change Notice
        CurrentDb.Execute ("INSERT INTO tblTasks ([Task Name], [Task Description], [Company], [Priority], [Status], [DueDate], [Need Help]) VALUES ('Change Notice', 'Daily Task', '(4) Ginny''s', '(1) Hot!', '0', DateAdd('d',(8-Weekday(Date(),2)) mod 7,Date()), 'No')")
        addowner
        'Daily Checks
        CurrentDb.Execute ("INSERT INTO tblTasks ([Task Name], [Task Description], [Company], [Priority], [Status], [DueDate], [Need Help]) VALUES ('Daily Checks', 'Daily Task', '(4) Ginny''s', '(1) Hot!', '0', DateAdd('d',(8-Weekday(Date(),2)) mod 7,Date()),  'No')")
        addowner
    Case "CheckBox2"
        'Tuesday
        Hide
        'Change Notice
        CurrentDb.Execute ("INSERT INTO tblTasks ([Task Name], [Task Description], [Company], [Priority], [Status], [DueDate], [User ID], [Need Help]) VALUES ('Change Notice', 'Daily Task', '(4) Ginny''s', '(1) Hot!', '0', DateAdd('d',(8-Weekday(Date(),3)) mod 7,Date()), 'Frontiera', 'No')")
        addowner
        'Daily Checks
        CurrentDb.Execute ("INSERT INTO tblTasks ([Task Name], [Task Description], [Company], [Priority], [Status], [DueDate], [User ID], [Need Help]) VALUES ('Daily Checks', 'Daily Task', '(4) Ginny''s', '(1) Hot!', '0', DateAdd('d',(8-Weekday(Date(),3)) mod 7,Date()), 'Frontiera', 'No')")
        addowner
    Case Else
   End Select
   End If
   End If
  Next c
End Sub

Function addowner()
Dim Owner As String
Owner = Environ("USERNAME")
Me!Owner = Owner '<---Error on this line
End Function

1 Ответ

1 голос
/ 11 июля 2019

Функция обычно используется для возврата значения в вызывающую процедуру:

Function GetOwner()
GetOwner = Environ("USERNAME")
End Function

Поместите эту функцию в общий модуль, и ее можно будет вызывать из любой точки базы данных, например:

Me!Owner = GetOwner()

Если вы хотите, чтобы это значение заполняло поле записи, созданное с помощью INSERT, объедините:

CurrentDb.Execute ("INSERT INTO tblTasks ([Task Name], [Task Description], [Company], [Priority], [Status], [DueDate], [User ID], [Need Help], [Owner]) VALUES ('Daily Checks', 'Daily Task', '(4) Ginny''s', '(1) Hot!', '0', DateAdd('d',(8-Weekday(Date(),3)) mod 7, Date()), 'Frontiera', 'No', '" & GetOwner() & "')") `

Если [Нужна помощь] - да / нетвведите поле, используйте False (без апострофов) или 0 вместо 'No'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...