powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как заполнить ComboBox результатом выполнения хранимой процедуры.
14 сообщений из 14, страница 1 из 1
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38141727
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме есть комбобох и его надо заполнить данными из хранимки 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?
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38141775
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В комбобокс нельзя, можно в датакомбо, но он в отдельной библиотеке. И не поддерживает стили.

В аттаче обертка для комбобокса, чтобы он вел себя как датакомбо. Дарю.
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38141983
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
а как пользоваться оберткой?
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142068
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как юзерконтролами пользоваться знаешь?
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142071
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да.
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142090
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обертка это юзерконтрол на базе комбобокса.
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142161
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
я не понимаю как его добавить.
обычно подрубаешь библиотеку и он появляется в aditional controls.
а здесь как его искать?
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142172
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты же сказал, что умеешь.

Хочешь, подруби проект, не хочешь, скопируй в свой проект файлы DataCombo.* и добавь лишь ctl.
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142192
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Спасибо. Разобрался.
В свой проект кину датакомбо и буду разбираться что он умеет.
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142320
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приведенную ниже процедуру передать объекты рекордсета и комбобокса,
и комбобокс заполнится достаточно быстро:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
' 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
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142327
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIВ приведенную ниже процедуру передать объекты рекордсета и комбобокса,
и комбобокс заполнится достаточно быстро:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
' 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

Это лишь заполнение. Уныло.
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142773
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЭто лишь заполнение. Уныло.
Ну да, то, о чем, собственно, и спрашивалось в теме

MinchНа форме есть комбобох и его надо заполнить данными
...
Добавлять значения с помощью .AddItem ... очень долго
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38142888
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVI,
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Supply.Get_Rows"
Set rs = cmd.Execute()

PopulateCombo(rs, Me.ComboBox)

Ругается на rs
...
Рейтинг: 0 / 0
Как заполнить ComboBox результатом выполнения хранимой процедуры.
    #38143793
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MinchSet rs = cmd.Execute()

PopulateCombo(rs, Me.ComboBox)

Ругается на rs
1. На какой строке ругается?
2. Как ругается?
3. В первом сообщении Вы упомянули про Excel и что можете "только запихнуть результат в рекордсет, а потом построчно перебирать его и добавлять значения с помощью .AddItem". Может, лучше, опубликуете код для этого варианта, тогда проще и конкретней будет разбираться.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как заполнить ComboBox результатом выполнения хранимой процедуры.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]