Как заполнить 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 результатом выполнения хранимой процедуры.»

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы