|
|
|
|
Private Sub IN_EKRAN_CLASS()
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset ' набор записей
' открываем всe классы
rst.Open "SELECT CLASS_TBL.* From CLASS_TBL ", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
'' Добавляет в список
If Not rst.BOF Then rst.MoveFirst
Do While Not rst.EOF ' заполняем наименованиями список
Me!Combo_CLASS.AddItem rst("NAME_CLASS"), 0 ' наименование
Me!Combo_CLASS.AddItem rst("ID_CLASS"), 1 ' ID
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
'значение высоты элемента ComboBox
SetComboHeight Me!Combo_CLASS, 600
End Sub
|
Как написать, что бы заполнять две колонки комбобокса, а то заполняется только одна (последовательностью строк) | |
|
| |
|
|
|
| У комбобокса свойство ControlType(Число столбцов) должно быть 2 (или сколько надо столбцов) | |
|
| |
|
|
|
| почему просто не указать запрос в качестве источника записей комбокса? | |
|
| |
|
|
|
| Потому что это не совсем Access - это VB6
====================================
может Me!Combo_CLASS.DataSource = rst.DataSource
нет, - говорит, что метод .DataSource - не найден .......
смешно, говорит нет - а сам его подставляет -тот атрибут | |
|
| |
|
|
|
| В бейсике это делается примерно так
Public Sub fill_combo(cmb As ComboBox)
Dim sSQL As String, rs As ADODB.Recordset
On Error GoTo L_Err
cmb.Clear
Set rs = New ADODB.Recordset
sSQL = "SELECT * From tblTest order by [name]"
rs.Open sSQL, cnn
If rs.EOF And rs.BOF Then GoTo L_Res
If Not rs.BOF Then rs.MoveFirst
Do While Not rs.EOF
cmb.AddItem rs("Name")
cmb.ItemData(cmb.NewIndex) = rs.Fields(fld & "ID")
rs.MoveNext
Loop
rs.Close
L_Res: If cmb.ListCount Then cmb.Text = cmb.List(0)
L_Exit: Set rs = Nothing: Exit Sub
L_Err: MsgBox Err.Description & " (" & Err.Number & ")", vbExclamation, "fill_combo": GoTo L_Exit
End Sub
|
| |
|
| |
|
|
|
| а почему бы не собрать текстовое слово
и не подсунуть его в RowSource | |
|
| |
|
|
|
|
| getrows
getstring
join(rst.getrows,";") | |
|
| |
|
|
|
| Простите........ не понял......... | |
|
| |
|
|
|
| можешь в датасоурс поставить рекордсет или да? | |
|
| |
|
|
|
| нет, - говорит, что метод .DataSource - не найден .......
смешно, говорит нет - а сам его подставляет -тот атрибут
или параметры метода не верны.......... | |
|
| |
|
|
|
| второй колонки комбика - пока не наблюдается......
вот с этой строкой кода - не врубаюсь
cmb.ItemData(cmb.NewIndex) = rs.Fields(fld & "ID")
|
кто такой - fld | |
|
| |
|
|
|
| fld - имя поля
второй колонки и не будет, но можно получить ID записи, которая выбрана в комбике:
...
ID = Combo_Test.ItemData(Combo_Test.ListIndex)
...
|
| |
|
| |
|
|
|
| ругается на имя поля fld
мжет в кавычки нуно - или......... | |
|
| |
|
|
|
| это обращение к полю рекодсета по имени
rs("ProjectID")
можно записать и как
rs("Project" & "ID")
и как
fld="Project"
rs(fld & "ID") | |
|
| |
|
|
|
|
| >Потому что это не совсем Access - это VB6
А разве VB6 combobox может иметь несколько столбцов?
Попробуйте использовать на VB6 форме combobox от MSForms. | |
|
| |
|
|
|
| Наверное действительно - не может он иметь ............
Я применил ListView вместо него.......
Спасибо - Дрюня рассказал как им пользоваться....... | |
|
| |
|
|
|
| в Row Source Type объекта можно сразу засунуть функцию которая будет его заполнять
в т.ч. по колонкам
в хелпе есть пример
RowSourceType Property (User-Defined Function) - Code Argument Values | |
|
| |
|