Access 2002

Изменение свойства RowSource


Если свойству RowSourceType присвоено значение Table/Query, вы можете либо указать имя таблицы/запроса или оператор SQL в свойстве RowSource, либо присвоить значение открытого набора записей свойству Recordset элемента управления. При задании имени функции Access будет вызывать ее для заполнения списка в строго определенных ситуациях.

Предположим, вы хотите поместить в форму две кнопки для заполнения списка одним из двух наборов значений. Примером нам послужит показанная на  6.24 форма frmFi 11 Test из базы данных CH06.MDB. Форма извлекает данные из двух различных полей таблицы, причем имя этой таблицы легко изменить, сменив значение свойства списка RowSource. При желании список можно заполнять и некоторым набором фиксированных значений.

Описываемую нами технологию делает особенно полезной один недостаток Access, который заключается в отсутствии возможности связать со списком или полем со списком уже открытый набор записей. Это означает, что если у вас есть открытый объект Recordset (неважно, ADO или DAO) и вы хотите вывести его данные в списке или в поле со списком, то для этого потребуется написать программный код. Вот на такую ситуацию и рассчитан наш пример.

При использовании ADO очень легко получить из набора записей строку значений, разделенных точкой с запятой, для присвоения свойству RowSource элемента управления. В данном случае достаточно воспользоваться методом объекта Recordset GetString. Если же вы пользуетесь объектами DAO, эту работу придется выполнить самостоятельно, применяя метод GetRows для получения данных из объекта Recordset. Листинг 6.6 включает главную часть процедуры SetListBoxContents, вызываемой из обработчиков двух командных кнопок формы. Какими бы объектами, DAO или ADO, вы ни пользовались, действия процедуры практически одинаковы. Она создает строку SQL, открывает набор записей и помещает в переменную strFill строку с информацией из этого набора.

Комментарии закрыты