VBA的SQL语法

VBA的SQL语法,sql,vba,ms-access,Sql,Vba,Ms Access,我一直在使用一个简单的VBA函数来检查当前用户是什么类型的用户,并在启动Access db时为他们打开相应的表单。我已经定义了一个GetWindowsUserName函数,以便在调试时正确获取用户名。打印时,我使用了以下代码: Public Function CheckUser() Dim UserName As String Dim SQLType As String UserName = UserNameWindows() SQLType = "SELECT tbl_Users.[UserT

我一直在使用一个简单的VBA函数来检查当前用户是什么类型的用户,并在启动Access db时为他们打开相应的表单。我已经定义了一个GetWindowsUserName函数,以便在调试时正确获取用户名。打印时,我使用了以下代码:

Public Function CheckUser()
Dim UserName As String
Dim SQLType As String
UserName = UserNameWindows()
SQLType = "SELECT tbl_Users.[UserType] FROM tbl_Users WHERE tbl_Users.[SOEID]='" & UserName & "';"
Debug.Print SQLType
DoCmd.RunSQL SQLType
If SQLType = "Admin" Then
DoCmd.OpenForm "frm_AdminLandingPage"
DoCmd.Close acForm, "frm_Loading"
Else
DoCmd.OpenForm "frm_LandingPage"
DoCmd.Close acForm, "frm_Loading"
End If
End Function
对于SQL语句,Debug.Print的结果如下,我也在Access的SQL视图中运行了它,它运行得很好:

从tbl_用户中选择tbl_用户。[UserType],其中tbl_用户。[SOEID]=“GS429”

但是,当我尝试运行该函数时,它会导致典型的“RunSQL操作需要一个包含SQL语句的参数”


想法?再次感谢你的帮助

DoCmd.RunSQL
仅适用于“操作”查询,如
更新
插入
删除
。它不适用于标准的
SELECT
。您可以打开一个连接并使用它来填充
记录集


请参阅此链接:

DoCmd.RunSQL
仅适用于“操作”查询,如
更新
插入
删除
。它不适用于标准的
SELECT
。您可以打开一个连接并使用它来填充
记录集

请参阅此链接:

替换此链接:

SQLType = "SELECT tbl_Users.[UserType] FROM tbl_Users WHERE tbl_Users.[SOEID]='" & UserName & "';"
Debug.Print SQLType
DoCmd.RunSQL SQLType
为此:

SQLType=DLookup("UserType","tbl_Users","SOEID='" & UserName & "'")
替换此项:

SQLType = "SELECT tbl_Users.[UserType] FROM tbl_Users WHERE tbl_Users.[SOEID]='" & UserName & "';"
Debug.Print SQLType
DoCmd.RunSQL SQLType
为此:

SQLType=DLookup("UserType","tbl_Users","SOEID='" & UserName & "'")

不幸的是,同样的错误(
RunSQL
不适用于
select
查询。请参阅:不幸的是,出现了相同的错误。(
RunSQL
不适用于
select
查询。请参阅:我认为您不必为UserName变量操心。只需使用提供该变量值的函数:
DLookup(“UserType”,“tbl\u Users”,“SOEID=UserNameWindows()”)
我认为您不必为UserName变量操心。只需使用提供该变量值的函数:
DLookup(“UserType”、“tbl\u Users”、“SOEID=UserNameWindows()”)