访问VBA中的SQL字符串行为异常

问题描述

我有一个访问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