07.12.2006, 22:13
общий
это ответ
Здравствуйте, Bahus!
Если Вы используете форму Access и в типе источника данных выбрано:"Таблица или запрос", то предыдущий ответ - самый лучший вариант, хотя есть и другие. Но он никак не подразумевает использование RecordSet. При использовании RecordSet в VB или VBA(Visual Basic for Application, тип источника данных у поля со списком "Список значений") можно использовать приведенный код хотя он выполняется с библиотекой DAO а не ADO.
Удачи
Евгений.
Приложение:
Public Function LoadCombo() ‘заполнение Combo1Dim dCtl As Object, sSQL As String, Dim db As DAO.Database, rs As DAO.RecordsetSet db = OpenDatabase(путь\файл.mdb)‘для VBA Set db = CurrentDb‘объект баэа данныхsSQL = "SELECT pupils.id, pupils.surname FROM pupils " & _"WHERE pupils.class=" & cbClasses.Value‘ Строка SQL источника строкSet dCtl = Form1.Combo1 ‘объект поле со спискомSet rs = db.OpenRecordset(sSQL) ‘открытие рекордсетаdCtl.Clear ‘очищение поля со списком‘для VBA dCtl.RowSource = "" rs.MoveLast ‘переход к последней записи rs.MoveFirst ‘переход к первой записи If rs.RecordCount = 0 Then Exit Function‘если кол-во записей равно нулю выход Do Until rs.EOF ‘цикл пока не будет признака конца записей dCtl.AddItem rs(1) & ""‘добавляем значение поля 1 рекордсета к списку поля со списком‘\& "" - для защиты от отсутствия значеия (NULL) rs.MoveNext ‘переходим к следующей записи Loop ‘к началу циклаrs.Close ‘закрываем рекордсетSet rs = Nothing ‘очищаем переменнуюEnd Function