Text8.DataSource=Data1
Text8.DataField=Notes
Рис. 3.6. Вид экранной формы.
7. Предусмотрим средство для завершения работы приложения. Для этого добавьте на форму командную кнопку, определите ее свойство Caption как “Выход” и установите следующий код в процедуре обработки события Click:
Private Sub Command1 Click ()
Unload Me
End Sub
8. Запустите проект на выполнение выбором команды Start из меню Run, или нажмите клавишу F5. Результат работы программы показан на рис. 3.7. С помощью кнопок со стрелками на объекте управления данными можно перемещать текущий указатель по набору записей и содержимое соответствующих полей будет автоматически отображаться на форме в связанных элементах управления.
9. Закройте приложение нажатием кнопки “Выход”.
Рис. 3.7. Результат работы приложения.
Урок 4
Свойства, методы и события объекта управления данными
Объект Data, как и любой другой элемент управления в Visual Basic, имеет несколько стандартных, общих для многих элементов управления, свойств, методов и событий. Наряду с ними, он имеет целый ряд свойств, методов и событий, предназначенных для работы с данными. Именно они и будут последовательно рассмотрены ниже.
Свойства
• BOFAction
Свойство BOFAction определяет действие объекта Data, если свойство BOF (beginning of file — начало файла) у созданного им набора записей установлено в True.
Синтаксис: data1.BOFaction=value.
Значение value может быть выбрано из двух альтернатив: MoveFirst или BOF.
При создании объекта Data свойство BOFAction устанавливается по умолчанию как MoveFirst. При этом текущей становится первая запись в наборе записей.
Установка свойства BOFAction в BOF приводит к тому, что при перемещении указателя текущей записи за пределы набора сверху, текущая запись становится недопустимой (invalid) и любая попытка ее редактирования приведет к ошибке. В этом случае происходит событие Validate на первой записи в наборе и, затем, событие Reposition, уже на недопустимой записи. При этом кнопка перемещения указателя к предыдущей записи на объекте управления данными становится неактивной.
Установить свойство BOFAction объекта управления данными data1 в режиме выполнения приложения можно следующим образом:
data1.BOFaction= vbBOFActionMoveFirst,
или
data1.BOFaction= vbBOFActionBOF.
Возможные установки свойства BOFAction приведены в следующей таблице.
Установка ∙ Константа ∙ Значение
MoveFirst ∙ vbBOFActionMoveFirst ∙ 0
BOF ∙ vbBOFActionBOF ∙ 1
• Connect
Свойство Connect определяет тип базы данных, открываемой объектом Data. По умолчанию открывается база данных в формате Microsoft Access.
Синтаксис: data1.connect=string.
Возможные варианты установки свойства Connect приведены в следующей таблице.
Тип базы данных ∙ Определение
MS Access ∙ ";"
dBASE х ∙ "dBASE x;"
Paradox x.x ∙ "Paradox x.x;"
FoxPro x.x ∙ "FoxPro x.x;"
Excel x.0 ∙ "Excel x.0;"
Lotus WKx ∙ "Lotus WKx;"
Text ∙ "Text;"
Btrieve ∙ "Btrieve;"
ODBC ∙ "ODBC; DATABASE = defaultdatabase; UID=user; PWD=password; DSN=datasourcename; LOGINTIMEOUT=seconds"
Установка свойства Connect в режиме выполнения приложения производится следующим образом: data1.connect= " dBASE IV;"
data1.connect= " FoxPro 3.0;".
• Database
Использование свойства Database в режиме выполнения приложения позволяет получить ссылку на объект Database, который создан объектом Data.
Синтаксис: Set databaseobject = data1.Database.
Объект Data создает объект Database на основе своих свойств DatabaseName, Exclusive, ReadOnly, и Connect. Так как объект Database имеет свои собственные свойства и методы то, получив на него ссылку, вы можете использовать их в приложении. Например, вы можете использовать методы Close или Execute. Подробное описание работы с объектом Database приведено в уроках, посвященных объектам доступа к данным.
• DatabaseName
Использование свойства DatabaseName позволяет получить или установить имя и месторасположение источника данных для объекта Data.
Синтаксис: data1.DatabaseName=string.
Строковое выражение string определяет месторасположение и имя файла базы данных в форматах MS Access и Btrieve. Если используется база данных, размещенная на файл-сервере, то строка должна включать полный путь к требуемому файлу, например:
\\SERVER\DATA\DATABASE.MDB.
Для баз данных в формате dBASE, Paradox и др. строка string должна содержать только путь к файлу.
Для баз данных ODBC это свойство не определяется, так как все необходимые параметры для связи с базой данных устанавливаются свойством Connect.
Если вы во время работы приложения изменяете свойство DatabaseName, то после сделанных изменений необходимо выполнить метод Refresh объекта Data.
Продемонстрируем использование свойства DatabaseName в режиме выполнения приложения. Для этого:
1. Откройте проект, созданный для просмотра содержимого файла BIBLIO.MDB.
2. Удалите содержимое свойства DatabaseName объекта управления данными Data1.
3. Добавьте следующий код в процедуру обработки сообщения о загрузке формы:
Private Sub Form_Load()
data1.databasename= "c: \vb5\biblio.mdb"
data1.refresh
End Sub
4. Запустите проект.
При разработке приложений для работы с базами данных лучше не привязывать пользователя к конкретной структуре каталогов установкой свойства 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
Свойство EOFAction определяет действие объекта Data, если свойство EOF (end of file — конец файла) у созданного им набора записей установлено в True.
Синтаксис: data1.EOFAction=value.
Значение value может быть выбрано из трех альтернатив: MoveLast, EOF, или AddNew.
При создании объекта Data свойство EOFAction устанавливается по умолчанию как MoveLast. При этом текущей остается последняя запись в наборе записей.
Установка свойства EOFAction в EOF приводит к тому, что при перемещении указателя текущей записи за пределы набора снизу, текущая запись становится недопустимой (invalid) и любая попытка ее редактирования приведет к ошибке. В этом случае происходит событие Validate на последней записи в наборе и, затем, событие Reposition, уже на недопустимой записи. При этом кнопка перемещения указателя на следующую запись на объекте управления данными становится неактивной.
Если установить свойство EOFAction в AddNew, то при перемещении указателя текущей записи за последнюю запись набора, происходит событие Validate на последней записи, затем, в набор записей добавляется новая пустая запись и происходит событие Reposition. Когда пользователь таким способом добавляет новую запись, эта она сначала создается в памяти компьютера в буфере копирования. Если после этого пользователь ввел необходимые данные и переместил указатель текущей записи на любую другую запись, то новая строка, уже содержащая данные, будет помещена в набор записей и потом в базу данных. В противном случае, если пользователь не ввел данные и переместил указатель, то пустая новая строка не добавляется в набор записей. Таким образом, установка свойства EOFAction в AddNew дает возможность пользователю добавлять в базу данных новые записи с помощью объекта Data и связанных с ним элементов управления.