首页 > 解决方案 > 使用 sql 记录集确定加载时显示哪个用户窗体

问题描述

我有一个 Word 中的 VBA 应用程序。当用户打开文档时,他们将看到两个版本的主菜单之一,这取决于他们存储在 SQL 表中的访问级别。访问级别列是一个整数并且是“1”或“0”。我正在尝试根据查询该表的结果在 VBA 中使用一个简单的 if then 语句,但我的 rs 对象不断出现类型不匹配。

Sub accesscheck()
Dim Cn As ADODB.Connection
Dim Server_Name As String
Dim Database_Name As String
Dim SQLStr As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Server_Name = "SDL02-VM25"
Database_Name = "PIA"
SQLStr = "select [AccessLevel] from dbo.[AttendanceUsers] Where [Adusername] ='" & getWinUser & "'"
Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & vbNullString
rs.Open SQLStr, Cn, adOpenStatic
If rs = "1" Then MainMenu.Show vbModeless Else OLMenu.Show
rs.Close
Cn.Close
Set rs = Nothing
Set Cn = Nothing
End Sub

标签: sqlvbams-word

解决方案


您必须指定列名,也不需要"". 尝试这个 :

....
....
If rs("AccessLevel") = 1 Then MainMenu.Show vbModeless Else OLMenu.Show
....
....

推荐阅读