Как заполнить ComboBox результатом выполнения хранимой процедуры. - VB
Формулировка задачи:
На форме есть комбобох и его надо заполнить данными из хранимки SQL.
В аксесе делается все просто Combobox.RecordSource = "EXEC dbo.my_select"
В эксель так просто судя по всему нельзя, пытаюсь вот так.
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "dbo.my_select"
Me.Combobox.RowSource = cmd.Execute()
Но так тоже не хочет.
Могу только запихнуть результат в рекордсет, а потом построчно перебирать его и добавлять значения с помощью .AddItem.
Но это очень долго.
Можно как-то весь рекордсет поместить в combobox?
В аксесе делается все просто Combobox.RecordSource = "EXEC dbo.my_select"
В эксель так просто судя по всему нельзя, пытаюсь вот так.
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "dbo.my_select"
Me.Combobox.RowSource = cmd.Execute()
Но так тоже не хочет.
Могу только запихнуть результат в рекордсет, а потом построчно перебирать его и добавлять значения с помощью .AddItem.
Но это очень долго.
Можно как-то весь рекордсет поместить в combobox?
Решение задачи: «Как заполнить ComboBox результатом выполнения хранимой процедуры.»
textual
Листинг программы
' Populates MSForm's combobox (CB) by contents of recordset (objRS) Sub PopulateCombo(objRS As Object, CB As MSForms.ComboBox) Dim a(), b() Dim c&, cs&, r&, rs& objRS.MoveFirst a = objRS.GetRows cs = UBound(a, 1) rs = UBound(a, 2) ReDim b(0 To rs, 0 To cs) For r = 0 To rs For c = 0 To cs b(r, c) = a(c, r) Next Next CB.ColumnCount = cs + 1 CB.List = b End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д