【发布时间】:2020-12-02 22:51:46
【问题描述】:
我有一点 VBA 的访问权限,我这辈子都不知道哪里出了问题。
首先,这是有问题的代码部分,我将在下面解释我想要什么以及它在做什么。
loguser = Environ$("USERNAME")
sqlstr = "INSERT INTO bypass_logins ([timestamp], [selected_user], [logged_in_user]) VALUES (" & Format(Now(), "dd/MM/yyyy") & "," & gstrUser & "," & loguser & ")"
Debug.Print sqlstr
'runs sql string above to write back to db
DoCmd.SetWarnings False
DoCmd.RunSQL sqlstr
DoCmd.SetWarnings True
第一行旨在捕获登录到运行代码的 PC 的用户名,它会执行此操作,并通过 debug.print 对其进行监控来确认。 sqlstr 的意思是写一个日期,从这个代码前面的表单上的一个框中选择的用户名(gstrUser)和上面的用户名到数据库表“绕过登录”中的各个字段。
但是,当计算此字符串时,我看到的是一个弹出框,其中 loguser 返回的用户名作为唯一文本,然后是一个带有确定按钮的输入框。
无论我在此弹出窗口的输入字段中输入什么,都将输入到 sqlstr 中,然后由 DoCmd.RunSQL sqlstr 处理并写回数据库。如果我将框留空并点击确定,则此字段中不会写入任何内容,字符串变为
INSERT INTO bypass_logins ([timestamp], [selected_user], [logged_in_user]) VALUES (13/08/2020,43,)(例如)
不太清楚这里发生了什么,或者我哪里出错了,但我想可能是字符串创建中使用的特殊字符来返回变量?
提前致谢
【问题讨论】:
标签: sql vba ms-access ms-access-2016