Страница 170 из 179
Следующий фрагмент кода показывает, как с помощью программного кода добавить новую запись в таблицу Titles.
Data1.DatabaseName = "BIBLIO.MDB"
Data1.RecordSource = "Titles"
Data1.Refresh
Data1.Recordset.AddNew 'Добавить новую запись
Data1.Recordset("Title") = "Visual Basic" ' Установить значения полей
Data1.Recordset("Year Published") = "1996"
Data1.Recordset("AU_ID") = 37 Data1.Recordset("ISBN") = "111-111-11-11"
Data1.Recordset("PubID") = 43 Data1.Recordset.Update ' Сохранить изменения
Редактирование текущей записи
Для того чтобы изменить данные в вашей базе данных, вы должны сначала сделать запись, подлежащую изменению, текущей записью. Это можно просто сделать при помощи одного из методов Move или при помощи кнопок со стрелками на объекте управления данными. Затем можно провести необходимые изменения содержимого связанных объектах управления. Чтобы сохранить сделанные изменения, достаточно просто переместить указатель текущей записи на любую другую запись или использовать метод Update.
Таким образом, для редактирования текущей записи надо сделать следующее:
1. Позиционируйте указатель текущей записи на запись, которую вы хотите редактировать.
2. Определите новые значения в полях текущей записи.
3. Используйте метод Update или любой из методов Move
Следующий пример показывает, как с помощью программного кода изменить содержимое поля PubID в первой записи таблицы Titles. Обратите внимание, что вы можете изменить данные либо в самом наборе записей, либо в связанном объекте управления:
Data1.DatabaseName = "C: VB5BIBLIО2.MDB"
Data1.RecordSource = "Titles"
Data1.Refresh
Data1.Recordset("PubID") = "48"
TxtPub.Text = "Visual Basic"
Data1.Recordset.Update
Удаление записей
Чтобы удалить запись, установите указатель на требуемую запись и примените метод Delete объекта Recordset. Удаление одной записи нам уже встречалось при изучении свойства Recordset объекта управления данными. Чтобы удалить группу записей, надо повторить подобные действия необходимое количество раз. В следующем примере из таблицы Titles базы данных BIBLIO.MDB удаляются все записи, у которых поле “Year Published” содержит величину меньшую, чем 1989.
Data1.DatabaseName="C: VB5BIBLIO.MDB"
Data1.RecordSource="Select * from Titles where [Year Published]<1989"
Data1.Refresh
Do While Data1.Recordset.EOF = False
Data1.Recordset.Delete
Data1.Recordset.MoveNext
Loop
В этом примере при каждом проходе тела цикла используется метод MoveNext для перемещения указателя на следующую запись. Вам необходимо использовать этот метод, так как после удаления текущая запись становится недопустимой (invalid) и любая попытка доступа к ней вызовет ошибку.
Использование пары методов Delete и MoveNext не является единственным способом удаления сразу нескольких записей из базы данных. Для аналогичных целей можно использовать соответствующий SQL-запрос. Например, вместо приведенного выше кода можно использовать аналогичный по своему действию SQL-запрос:
DELETE FROM Titles WHERE [Year Published] < #1/1/1989#.
Причем, такой подход оказывается более эффективным, чем применение в цикле пары методов Delete и MoveNext.
Урок 6
Связанные с данными элементы управления
Применение связанных с данными элементов управления — Data-bound Controls уже кратко обсуждалось в уроке, посвященном работе с Data Control. Связанные элементы управления служат для отображения на экранной форме содержимого записей из таблиц базы данных и всегда используются только вместе с объектом Data.
После запуска приложений пользователи получают доступ к информации, содержащейся в базах данных именно через связанные элементы управления и проводят операции редактирования, обновления или выполняют другие манипуляции с данными. Любые изменения данных, сделанные пользователем в связанных элементах управления могут быть автоматически отражены в базе данных.
Практически все операции по взаимодействию связанных элементов управления с объектами управления данными реализованы внутри их самих и, поэтому, скрыты от программиста во время разработки приложения. Вследствие этого, применение связанных с данными элементов управления позволяет значительно упростить создание и понизить затраты времени на разработку приложений, ориентированных на работу с базами данных.
В Visual Basic 5 в качестве связанных с данными элементов управления может использоваться целый ряд обычных элементов управления:
Text box — текстовое окно, Label — метка, Check box — контрольный индикатор, Image — изображение, Picture box — графическое окно, List box — список, Combo box — комбинированное окно, OLE container control — OLE-контейнер.
Примеры использования текстовых окон для отображения содержимого записей базы данных были уже рассмотрены в предыдущей главе.
Кроме обычных элементов управления для работы с базами данных, пятая версия Visual Basic поддерживает несколько ActiveX объектов:
Data-bound list box — связанный с данными список,
Data-bound combo box — связанное с данными комбинированное окно,
MSFlexGrid — сетка,
Data-Bound Grid (DBGrid) — связянная с данными сетка,
MaskedEdit — окно редактирования с маской,
RichTextBox — улучшенное окно редактирования.
Все эти объекты, за исключением MaskedEdit и RichTextBox позволяют отображать на экране целые группы записей в виде списков или таблиц. А применение DBGrid позволяет настолько повысить функциональность разрабатываемых приложений, что об этом будет специальный разговор.
Более того, если по каким-либо причинам вас не удовлетворяют возможности поставляемых вместе с Visual Basic связанных элементов управления, вы можете использовать связанные элементы управления, созданные другими разработчиками, или можете сами создать собственные ActiveX объекты для связи с данными по вашему вкусу.
Общие свойства связанных элементов управления
Большинство связанных с данными элементов управления имеют три свойства, само название которых определяет их принадлежность к группе объектов, имеющих самое непосредственное отношение к данным — DataField, DataSource и DataChanged. Во всех названиях свойств присутствует слово Data. В следующей таблице приведено их краткое описание.
Свойство ∙ Описание
DataField ∙ Этим свойством определяется имя поля в наборе записей, созданном объектом управления данными
DataSource ∙ Этим свойством определяется имя объекта управления данными, с которым связывается данный элемент управления
DataChanged ∙ Это свойство показывает, было ли пользователем изменено содержимое связанного элемента управления
Чтобы использовать возможности связанных элементов управления вам необходимо: во-первых — определить источник данных указанием имени объекта управления данными в свойстве DataSource и, во-вторых — связать его с требуемым полем базы данных соответствующей установкой свойства DataField. Если база данных доступна во время разработки приложения, то список допустимых полей отображается в окне Properties (Свойства) связанного элемента управления (рис. 6.1).