Некоторые свойства ADO Data Recordset
Свойство Recordset возвращает набор записей, ради которых и выполняется связь кода с базами данных. Recordset позволяет извлекать записи, перемещаться от записи к записи, обновлять записи. Например, для перемещения к первой записи набора используется метод MoveFirst, к последней — MoveLast, к следующей — MoveNext, и к предыдущей — MovePrevious. Причем вам никогда не придется набирать в редакторе Visual Basic наименования этих Move-методов (как и самого свойства Recordset) полностью: достаточно только после слова «Recordset» ввести точку, редактор выведет на экран контекстное меню со свойствами и методами объекта DatabaseObject. Recordset. Из меню можно просто выбрать необходимое свойство или метод, а можно использовать контекстный поиск: сразу после введения вами какого-либо символа курсор меню перемещается к пункту меню, первый символ которого совпадает с введенным; после введения второго символа можно убедиться в том, вы еще «ближе» к нужному меню; и так далее (рис. 16.41). Рис. 16.41 Сразу после введения какого-либо символа курсор меню перемещается к пункту меню, первый символ которого совпадает с введенным, и так далее Если в результате использования свойств ConnectionString и RecordSource количество записей в наборе окажется нулевым, использование методов перемещения по набору может вызвать ошибку. Чтобы избежать возникновения ошибки, можно проверять наличие записей в наборе при помощи свойства DatabaseObject. Recordset.RecordCount, которое возвращает количество записей в наборе. При открытии набора это свойство может давать неверный результат, но, по крайней мере, при наличии записей его значение будет больше нуля. Точное значение этого свойства можно получить сразу же после использования любого Move-метода. Важнейшим свойством (коллекцией), используемым в коде, является DatabaseObject. Recordset.Fields — коллекция значений полей текущей строки набора. Это — последнее звено в цепи, связывающей код и управляющий данными элемент, поскольку это — информация, хранимая в таблицах базы данных, в то время как ConnectionString, RecordSource и Recordset — способ доступа к данным. Конкретное поле определяется индексом (номером), начиная с нуля. Использование последовательно методов MoveLast и MoveNext обязательно приводит к тому, что свойство DatabaseObject. Recordset.EOF возвращает значение True. Аналогично, использование последовательно методов MoveFirst и MovePrevious обязательно приводит к тому, свойство DatabaseObject. Recordset.BOF возвращает значение True. Этим обычно пользуются для считывания записей из набора в цикле Do While. Например, в следующем коде сначала методом MoveFirst выполняется переход к первой записи набора, а затем в цикле до конца набора заполняются комбинированные списки значениями из второго и третьего поля набора. Adodc1.Recordset.MoveFirst Do While Not Adodc1.Recordset.EOF Combo1.AddItem Adodc1.Recordset.Fields(1) Combo2.AddItem Adodc1.Recordset.Fields(2) Adodc1.Recordset.MoveNext Loop Если необходимо узнать количество полей в наборе, можно воспользоваться свойством DatabaseObject. Recordset.Fields.Count. Например, в следующем коде каждый новый элемент списка формируется из данных всех полей набора. Adodc1.Recordset.MoveFirst Do While Not Adodc1.Recordset.EOF Str = "" For i = 0 To Adodc1.Recordset.Fields.Count - 1 Str = Str & Adodc1.Recordset.Fields(i) & vbTab Next Combo1.AddItem Str Adodc1.Recordset.MoveNext Loop
|