Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_6.doc
Скачиваний:
97
Добавлен:
01.12.2018
Размер:
3.77 Mб
Скачать

10.4.3. Перемещение по набору записей.

Для перемещения по набору данных используются методы объекта RecordSet:

- MoveFirst – перемещает курсор на первую запись в наборе

данных;

- MoveNext – перемещает курсор на следующую запись в наборе

данных;

- MovePrevious – перемещает курсор на предыдущую запись;

- MoveLast – перемещает курсор на последнюю запись в наборе;

- Move n – перемещает курсор на n записей вперед или назад в зависимости от знака n.

Если при перемещении по записям курсор разместится перед первой записью, то значение свойства BOF объекта RecordSet становится равным True. Точно так же, если курсор оказался после последней записи, то становится равным True значение свойства EOF. В обоих случаях для продолжения работы курсор необходимо вернуть в набор записей. Значит, необходимы проверки положения курсора. Проверки положения курсора и при необходимости его возврат в набор записей выполняются следующим кодом:

If rs.BOF Then rs.MoveFirst

и, аналогично:

If rs.EOF Then rs.MoveLast

Если типом набора записей является Dinaset или SnapShot, то появляется возможность перемещаться на запись с произвольным номером. Для этого нужно воспользоваться свойством AbsolutePosition объекта RecordSet:

rs.AbsolutePosition = k,

где k – номер заданной записи в наборе. Нумерация записей в наборе RecordSet начинается с 0, т.е. первая запись имеет номер 0.

Для набора типа Table такой возможности нет, так как в нем допустимо перемещение только в прямом направлении.

10.4.4. Обращение к отдельным полям записи.

Само по себе перемещение по записям не позволяет оперировать

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

Обратиться к некоторому полю записи можно по его имени или по его индексу. Поля индексируются от нуля до величины на единицу меньшей общего числа полей в наборе записей. Например, чтобы присвоить полю по имени nazv новое значение, которое содержится в переменной st, можно записать либо:

rs.Fields(nazv).Value = st,

либо, если индекс этого поля равен i, то:

rs.Fields(i).Value = st.

Оба способа равноправны. Свойство Value можно не указывать, так как оно подразумевается по умолчанию.

Общее количество полей в записи возвращает свойства Count. Например:

n = rs.Fields.Count

Общее количество записей в наборе можно определить с помощью следующего кода:

nRec = 0

Do While Not rs.EOF

rs.MoveNext

nRec = nRec + 1

Loop

Записи, так же, как и поля записи, в VB нумеруются с нуля. Поэтому, чтобы организовать цикл по всем полям записи, нужно записать:

For i = 0 To rs.Fields.Count - 1

. . . . . . . . . . . .

Next i

Чтение значений полей записи в некоторую переменную осуществляется аналогично записи нового значения поля:

st = rs.Fields(nazv)

или

st = rs.Fields(i).

Для добавления новой записи в RecordSet нужно вызвать метод AddNew, присвоить полям записи значения и вызвать метод Update. Например:

rs.AddNew

rs.Fields(nazv) = “Astra”

rs.Fields(prod) = “Laser SQ”

rs.Fields(num) = n

rs.Update

Выполнение метода Update приводит к тому, что сделанные изменения в RecordSet вызовут соответствующие изменения и в самой БД.

В технологии ADO отсутствует метод Edit, так как здесь изменение значения какого-либо поля автоматически включает режим редактирования.

Для удаления текущей записи из RecordSet используется метод Delete. Например, если мы хотим удалить запись с заданным номером из RecordSet, то нужно записать:

n = InputBox(“Введите номер удаляемой записи”)

rs.Move n – 1

rs.Delete

rs.Update

Теперь мы можем производить чисто программными средствами без использования элемента ADO Data любую обработку информации в нашей БД. Остается рассмотреть вопрос о визуализации содержимого объекта RecordSet. Вывести содержимое объекта RecordSet на экран монитора можно, например, с помощью уже известного нам элемента управления MSFlexGrid.

Чтобы ячейке (k, m) элемента MSFlexGrid присвоить значение i–го поля j–той записи из RecordSet, достаточно выполнить:

rs.Move j – 1

MSFlexGrid1.TextMatrix(k, m) = rs.Fields(i)

И, наоборот, чтобы записать в RecordSet значение i–го поля j–той записи, содержащейся в ячейке (k, m) элемента MSFlexGrid, нужно выполнить:

rs.Move j – 1

rs.Fields(i) = MSFlexGrid1.TextMatrix(k, m)

После завершения обработки информации в БД необходимо разорвать соединение объектов ADO с БД и освободить занимаемую ими память. Это осуществляет следующая группа операторов:

rs.Close

Set rs.Nothing

cn.Close

Set cn.Nothing

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]