Поля, не отображаемые для набора записей ADODB

У меня есть набор записей ADODB, который я передал из модуля в форму. Мне нужно показать существующие поля набора записей, но это не работает. Набор записей успешно передан, как показывает быстрый Debug.Print. Вот мой код:

Модуль:

Public Sub dofilter() 
   ...
   With ADORec
     Set .ActiveConnection = ADOConn
     .Source = SQL
     .LockType = adLockReadOnly
     .CursorType = adOpenKeyset
     .CursorLocation = adUseClient
     .Open
   End With

   Call Form_FormA.setrst(ADORec)
End Sub

И затем в форме А:

Public Sub setrst(ByVal rst As ADODB.Recordset)
    Set Me.Recordset = rst
    Me.txtField.ControlSource = rst.Fields("ID").Name
End Sub

Поле ID в форме по-прежнему пусто. Я надеюсь, что вы, ребята, можете помочь.


person LYGT    schedule 02.06.2019    source источник
comment
Я думаю, вам нужно показать больше кода. Каков код Form_FormA.setrst. Или Form_FormA - это имя вашей пользовательской формы?   -  person Storax    schedule 02.06.2019
comment
Form_FormA — это имя моей пользовательской формы да. В этой форме больше нет кода.   -  person LYGT    schedule 02.06.2019
comment
И вы ожидаете, что rst.Fields("ID").Name появится в txtField?   -  person Storax    schedule 02.06.2019
comment
Я думаю, что это должно быть .value или какое-то другое свойство. Это разделенная форма, в которой в нижней части пользовательской формы должны быть перечислены все записи. Итак, я пытаюсь добавить существующие поля моего набора записей в свою пользовательскую форму.   -  person LYGT    schedule 02.06.2019
comment
Чтобы перечислить все записи, вы не можете использовать текстовое поле. Список, вероятно, был бы лучшим выбором.   -  person Storax    schedule 02.06.2019


Ответы (1)


Прежде всего, я бы рекомендовал ознакомиться с документацией ControlSource. Это свойство не подходит для заполнения текстового поля из набора записей.

И тогда я бы заменил Me.txtField.ControlSource = rst.Fields("ID").Name на Me.txtField.value = rst.Fields("ID").Name. Это, вероятно, то, что вы хотите.

Другая рекомендация — не использовать глобальный экземпляр пользовательской формы по умолчанию.

Обновление: на основе комментария вам нужен список, если вы хотите отобразить все записи и следующую строку кода ListBox1.Column = rst.GetRows. Вы должны определить список с достаточным количеством столбцов.

person Storax    schedule 02.06.2019