При разработке приложений для работы с базами данных лучше не привязывать пользователя к конкретной структуре каталогов установкой свойства DatabaseName на этапе разработки программы. Это может быть не всегда удобно для пользователя. Хорошим примером уважительного отношения к пользователю служит хранение путей к файлам баз данных в специальных файлах конфигурации вашего приложения с последующим считыванием этой информации в процессе загрузки программы. Код, осуществляющий эту операцию, можно включить, например, в процедуры обработки событий Load или Activate соответствующей экранной формы.
Другим способом определения пути к файлу базы данных является использование глобального объекта Visual Basic — объекта Арр. Хотя этот объект не имеет ни методов, ни событий, у него есть несколько очень полезных свойств. Одним из них является свойство Path, которое определяет путь к выполняемому файлу. Если вы используете интегрированную среду разработки Visual Basic, например, для отладки приложения, то App.Path определяет путь к файлу проекта, который вы запустили.
Пусть файлы баз данных для вашей программы находятся в подкаталоге DBASE каталога, в котором находится ваше приложение (проект). Тогда вы можете определить необходимый путь к файлу с помощью следующего фрагмента кода. Причем каталог, из которого запускается приложение (проект) может называться как угодно.
Dim DBName As String
DBName = "BIBLIO.MDB"
Data1.Databasename = App.Path+"\DBASE\"+DBName Data1.Refresh
• EOFAction
Значение value может быть выбрано из трех альтернатив: MoveLast, EOF, или AddNew.
При создании объекта Data свойство EOFAction устанавливается по умолчанию как MoveLast. При этом текущей остается последняя запись в наборе записей.
Установка свойства EOFAction в EOF приводит к тому, что при перемещении указателя текущей записи за пределы набора снизу, текущая запись становится недопустимой (invalid) и любая попытка ее редактирования приведет к ошибке. В этом случае происходит событие Validate на последней записи в наборе и, затем, событие Reposition, уже на недопустимой записи. При этом кнопка перемещения указателя на следующую запись на объекте управления данными становится неактивной.
Если установить свойство EOFAction в AddNew, то при перемещении указателя текущей записи за последнюю запись набора, происходит событие Validate на последней записи, затем, в набор записей добавляется новая пустая запись и происходит событие Reposition. Когда пользователь таким способом добавляет новую запись, эта она сначала создается в памяти компьютера в буфере копирования. Если после этого пользователь ввел необходимые данные и переместил указатель текущей записи на любую другую запись, то новая строка, уже содержащая данные, будет помещена в набор записей и потом в базу данных. В противном случае, если пользователь не ввел данные и переместил указатель, то пустая новая строка не добавляется в набор записей. Таким образом, установка свойства EOFAction в AddNew дает возможность пользователю добавлять в базу данных новые записи с помощью объекта Data и связанных с ним элементов управления.
Установить свойство EOFAction объекта управления данными data1 в режиме выполнения приложения можно следующим образом:
data1.EOFaction=vbEOFActionMoveLast,
data1.EOFaction=vbEOFActionEOF,
data1.EOFaction=vbEOFActionAddNew.
Возможные установки свойства EOFAction приведены в следующей таблице.
Установка ∙ Величина ∙ Значение
Приведем пример приложения, в котором есть возможность добавлять в базу данных новые записи.
Для этого:
1. Создайте вспомогательную базу данных BIBLI02.MDB, содержащую всего одну таблицу TITLES (чтобы не изменить оригинальную базу данных BIBLIO.MDB). Это можно сделать с помощью MS Access.
2. Откройте новый проект и добавьте на форму объект управления данными Data1.
3. В окне свойств объекта Data1 установите свойство DatabaseName, как имя файла базы данных с указанием полного пути C: \VB5\BIBLI02.MDB.
4. В окне свойств объекта Data1 установите свойство RecordSource как TITLES.
5. Разместите на форме пять меток и, соответственно, пять текстовых окон как показано на рис. 4.8 и установите их свойства следующим образом: