向用户表单添加功能以获取用户ID

时间:2019-07-11 18:25:53

标签: vba ms-access userform

我当前正在尝试设置一个函数,该函数将在MS Access数据库中创建记录后抓取并添加用户ID,并将其输入到“所有者”字段中。我目前遇到的问题是,它到达函数中的行me!owner = owner时抛出错误。

我得到的错误是:

Error Message

奇怪的是,此代码在我使用它的形式下起作用,但在userform中却不起作用。任何帮助或朝着正确方向推动将不胜感激!

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 个答案:

答案 0 :(得分:1)

通常用于向调用过程返回值的函数:

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'