繁体   English   中英

在多列列表框中水平显示SQL查询的结果

[英]Display results of SQL query horizontally in multicolumn listbox

我有一个SQL查询,该查询从一个表中以数组的形式提取五列信息,然后将结果输入到用VBA在Excel中编写的工具中的列表框中。

现在它垂直显示结果,而我需要水平显示结果。 列表框中的一列应显示SQL表中的一列。 列表框属性为它提供了五列相等的宽度,但我不确定为什么这行不通。

Sub searchall()
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
Dim list As Object
Set list = SearchForm.Results
Server_Name = "SDL02-VM25"
Database_Name = "PIA"
SQLStr = "select [Agentname],[position],[employeegroup],[supervisor],[manager] from dbo.[HistoricalMasterStaffing] [FirstName] ='" & SearchForm.firstname.value & "' or [LastName] ='" & SearchForm.lastname.value & "' or [Date] = '" & SearchForm.DateSearch.value & "' or [year] = '" & SearchForm.Year.value & "' or [employeegroup] = '" & SearchForm.EmployGroup.value & "' or [position] = '" & SearchForm.Position.value & "' or [ftpt] = '" & SearchForm.PTFT.value & "' or [Contractagency] = '" & SearchForm.Agency.value & "' or [termcode] = '" & SearchForm.TermCode.value & "'
Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & vbNullString
rs.Open SQLStr, Cn, adOpenStatic
With list
Dim arr()
arr() = rs.GetRows
.list = arr()
End With
rs.Close
Cn.Close
Set rs = Nothing
Set Cn = Nothing

End Sub

rs.GetRows返回二维数组中的数据,第一个索引是字段(列),第二个索引是行。
listbox.list期望数据为二维数组,但第一个索引为行,第二个索引为列。

因此,您要做的就是转置数据:

.list =  Application.Transpose(arr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM