Отображать результаты SQL-запроса по горизонтали в многоколонном списке - PullRequest
0 голосов
/ 27 июня 2018

У меня есть SQL-запрос, который извлекает пять столбцов информации из таблицы в виде массива, а затем передает результаты в Listbox с помощью инструмента, который я написал в Excel с VBA.

Сейчас он отображает результаты по вертикали, и мне нужно, чтобы они отображались по горизонтали. Один столбец в списке должен отображать один столбец из таблицы 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

1 Ответ

0 голосов
/ 27 июня 2018

rs.GetRows возвращает данные в 2-мерном массиве, где первый индекс - это поле (столбец), а второй индекс - это строка.
listbox.list ожидает данные как двумерный массив, но с первым индексом в виде строки, вторым в качестве столбцов.

Итак, все, что вам нужно сделать, это транспонировать данные:

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