我正在尝试将excel文档中userform的列表框从查询填充到SQL Server,但列表框始终为空。
我正在尝试获取要填充的位置列表,我将用它来定义后续查询的参数。
这是我的代码:
Option Explicit
Sub Populate_ListBox_From_SQL()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stDB As String, stConn As String, stSQL As String
Dim xlCalc As XlCalculation
Dim vaData As Variant
Dim k As Long
'set SQL connection and connection string
Set cnt = New ADODB.Connection
stConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DW;Data Source=use-rptdw-00;Use Procedure for Prepare=1;Auto Translate=True;" _
& "Packet Size=4096;Workstation ID=PI-L-C03RTRD;Use Encryption for Data=False;Tag with column collation when possible=False"
cnt.ConnectionString = stConn
'your SQL statement
stSQL = "SELECT ldesc FROM fin.location ORDER BY ldesc"
With cnt
.CursorLocation = adUseClient 'Necesary for creating disconnected recordset.
.Open stConn 'Open connection.
'Instantiate the Recordsetobject and execute the SQL-state.
Set rst = .Execute(stSQL)
End With
With rst
Set .ActiveConnection = Nothing 'Disconnect the recordset.
k = .Fields.Count
'Populate the array with the whole recordset.
vaData = .GetRows
End With
'Close the connection.
cnt.Close
'Manipulate the Listbox's properties and show the form.
With UserForm1
With .ComboBox1
.Clear
.BoundColumn = k
.List = Application.Transpose(vaData)
.ListIndex = -1
End With
.Show vbModeless
End With
'Release objects from memory.
Set rst = Nothing
Set cnt = Nothing
End Sub
也许我把代码放在错误的地方?我在userform的基础VBA代码下拥有它。 或者我可能需要为ListBox本身设置属性?
我对VBA很新,所以任何帮助都会受到赞赏
答案 0 :(得分:0)
没关系。我想到了。我只是没有明确调用该函数。虽然,现在我得到“运行时错误'400':表格已经显示;无法显示模态”错误。
知道如何阻止这种情况发生吗?