VBA Sub似乎正在跳过连接声明

时间:2018-05-02 14:31:27

标签: sql excel vba

编辑: 事实证明,原因是我使用文本框而不是列表框。该代码用于填充包含记录集结果的列表框。我没有适应它只用一个结果来填充文本框。如果其他人遇到任何类似的东西,我希望这会帮助你!谢谢你看看

我在excel的VBA项目中运行了几个SQL查询。它们是按钮点击运行的。我在每个Sub中声明所有连接变量等,然后在它完成运行时关闭它们。其中大多数只是复制和粘贴以下SQL SQL查询变量:

Public Sub AgentsReporting()
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 distinct[Agent Name] from dbo.[Master Staffing List] Where [Team] ='" & Reporting.ChooseTeam.Value & "'"
Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & vbNullString
rs.Open SQLStr, Cn, adOpenStatic
With Reporting.ChooseAgent
.Clear
Do
.AddItem rs![Agent Name]
rs.MoveNext
Loop Until rs.EOF
End With
rs.Close
Cn.Close
Set rs = Nothing
Set Cn = Nothing
Exit Sub
End Sub

到目前为止,所有这些都有效,除了下面的那个。当我单步执行它时,它似乎跳过所有声明并给我一个"方法或数据成员未找到"错误并突出显示" .clear"线。

Sub GetLateLessThan()
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 [Weekday Schedule] from dbo.[Master Staffing List] Where [Agent Name] ='" & Reporting.AgentName.Value & "'"
Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & vbNullString
rs.Open SQLStr, Cn, adOpenStatic
With Reporting.LateLessThan
    .Clear
    Do
    .AddItem rs![Weekday Schedule]
    rs.MoveNext
    Loop Until rs.EOF
End With
rs.Close
Cn.Close
Set rs = Nothing
Set Cn = Nothing
Exit Sub
End Sub

我无法弄清楚它为什么不起作用。它看起来应该工作正常,我已经仔细检查了with语句,仔细检查了变量的名称。有没有人知道为什么这个特殊的潜艇失败了,而其他的似乎工作正常?

0 个答案:

没有答案