VBA Sub, кажется, пропускает объявления о подключении - PullRequest
0 голосов
/ 02 мая 2018

Edit: Оказывается, причина в том, что я использую текстовое поле вместо списка. Код предназначался для заполнения списка с результатами набора записей. Я не приспособил его для заполнения текстового поля одним единственным результатом. Если кто-то еще испытывает что-то подобное, я надеюсь, что это поможет вам! Спасибо за внимание

У меня есть несколько SQL-запросов, которые я выполняю в проекте VBA в Excel. Они выполняются без нажатий кнопок. Я объявляю все переменные соединения и т. Д. В каждом Sub, а затем закрываю их, когда все закончится. Большинство из них просто копируют и вставляют следующее с измененными переменными 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, дважды проверил имена переменных. Кто-нибудь имеет представление о том, почему этот конкретный саб не работает, когда другие, кажется, работают нормально?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...