问题描述
我有一个访问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的目的是随后在数据库表“ bypass logins”的相应字段中写入日期,此代码前面的窗体中的框(gstrUser)中选择的用户名和上述用户名。
但是,在计算此字符串时,我看到的是一个弹出框,其中有loguser返回的用户名是唯一的文本,然后是带有确定按钮的输入框。
我在此弹出窗口中输入字段的内容是输入sqlstr,然后由 DoCmd.Runsql sqlstr
处理并写回数据库的内容。如果我将框保留为空白并单击“确定”,则此字段中未写入任何内容,字符串变为
INSERT INTO bypass_logins ([timestamp],[logged_in_user]) VALUES (13/08/2020,43,)
(例如)
不太确定这是怎么回事,或者我哪里出错了,但是我可能正在考虑在字符串创建中使用特殊字符来返回变量?
预先感谢
解决方法
您不能没有文本和日期时间的分隔符,并且必须调整日期格式,所以请尝试:
sqlstr = "INSERT INTO bypass_logins ([timestamp],[selected_user],[logged_in_user]) VALUES (#" & Format(Date(),"yyyy\/mm\/dd") & "#,'" & gstrUser & "','" & loguser & "')"
D