Умение обращаться с файлами данных - чуть ли не одна из самых важных
ступений в обучении программированию на Visual Basic! Здесь я
постараюсь выложить только самые основные приёмы работы с объектом
Data.
Прежде чем начать использовать базу данных её нужно сначала создать ;)!
- Создайте стандартный проект.
- Кликните на ToolBox'e на кнопку Data и натяните на форму так, чтобы полоска была не очень широкой и в самом низу формы.
-
Теперь создайте на форме четыре кнопки и назовите их (по порядку
создания): cmdAdd, cmdDelete, cmdUpdate, cmdExit. Свойствам Caption
дайте эти же имена, только без "cmd".
- Создайте на форме три текстовых поля одинаковой длины.
-
Теперь надо связать объект Data с какой-нибудь базой данных. С какой? С
той которая есть у всех владелцев VBasic'a - biblio.mdb! Активируйте
объект Data и в свойствах, в DatabaseName выберите этот файл. Теперь
там же, но в поле RecordSource надо выбрать раздел "Authors". Этим мы
выберем только нужную часть базы данных.
- Выделите первое
текстовое поле и в свойствах, в DataSource выберите единственную в
списке, созданную нами базу данных Data1, т.е. тем самым мы связываем
это текстовое поле с объектом Data1. А в поле свойств DataField
выберите "Au_ID". Теперь задача этого поля отображать идентификационный
номер каждого автора! То же самое проделайте со следующими двумя
другими полями, но в DataField вместо "Au_ID" выберите "Author" и "Year
Born".
Поздравляю! Если Вы ещё этого никогда не делали, то знайте - Вы
написали первую в своей жизни простенькую программку для отображения
содержания базы данных!!! А теперь научимся редактировать её. Итак,
главное редактирование - это занесение записей и удаление их.
7. Щёлкните два раза на кнопку Add и введите:
Private Sub cmdAdd_Click()
Data1.Recordset.AddNew
'Все поля, которые могут быть отредактированы будут очищены
'и подготовлены, поле Year Born будет установленно на 0,
'т.к. оно должно иметь какое-то значение
'поле Au_ID не будет очищено вообще, а изменено на самую
'последнюю позицию
End Sub
8. Следующая кнопка сохраняет внесённые изменения в базе данных. Сделайте двойной клик по кнопке Update и введите:
Private Sub cmdUpdate_Click()
'сохраняем ...
Data1.UpdateRecord
'без следующей строки после сохраниения в полях
'автоматически появились бы самые первые записи.
'поэтому закладке присваеваем идентификатор последней
'изменённой записи и в полях остануться ваши записи
Data1.Recordset.Bookmark = Data1.Recordset.LastModified
End Sub
9. Теперь самое лёгкое - удаление
записей!!! Ведь правильно говорят - "Ломать - не строить!" :-))).
Делаем двойной щелчок по кнопке Delete и вводим:
Private Sub cmdDelete_Click()
'чтобы выполнить последовательность инструкций над
'одиночным объектом Data1, не перечисляя его каждый
'раз, используем инструкцию With
With Data1.Recordset
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
End Sub
10. И теперь для кнопки Exit просто введите:
Private Sub cmdExit_Click()
End
End Sub
Всё! А тепeрь Вы создали почти настоящую программу с базой данных!!!
10. Запустите проект. Нажмите на правую
кнопку >. Содержание полей сменилось! Теперь нажмите на правую
кнопку >|. В полях появились самые последние записи! То же самое
будет происходить при нажатии на левые кнопки |< и <. Но как Вы,
наверное, заметили поле, содержащие год рождения, всегда пустое!
11. Теперь нажмите кнопку "Add".
12. Первое поле НЕ испраляйте, во второе ввидите, например, ваше имя, а в третье год рождения.
13. Теперь сохраните эту запись, нажав кнопку "Update".
14. Знайте, ваша запись теперь сохранена
на самом последнем месте! Можете снова "прогуляться" по записям и
вернутся наконец с помощью правой кнопки >|. Ваша запись на месте.
15. Теперь нажмите на кнопку Delete... запись исчезла! НО! В этом случае мы НЕ можем удалять записи сделанные не нами.
Ну, вот и готово! А теперь я расскажу немного о создании некотрых
удобств с работой с базой данных. Например, представим себе, что Вы,
просматривая нашу базу данных, заметили имя автора где-то в середине и
через некоторое время должны вернуться к этой записи... Не пролистывать
же нам снова окло тысячи имён!!! Для этого можно создавать так
называеимые закладки!
16. создайте на форме ещё две кнопки с именами cmdMBM и cmdSMB со следующими надписями: Make the Bookmark и Show the Bookmark.
17. Теперь в разделе формы General Declarations объявите переменную, которая будет содержать идентификатор актуальной записи:
'переменная должна быть объявлена, как Variant поскольку
'значения закладки могут быть как числовые, так и строковые
Dim BM As Variant[/auote]
18. Теперь делаем двойной щелчок по кнопке cmdMBM и вводим:
Private Sub cmdMBM_Click()
'получаем идентификатор актуальной записи
BM = Data1.Recordset.Bookmark
End Sub
19. Теперь делаем двойной щелчок по кнопке cmdSBM и вводим:
Private Sub cmdSBM_Click()
'присваеваем закладке идентификатор нужной записи
Data1.Recordset.Bookmark = BM
End Sub
20. Снова запустите проект и прощёлкайте несколько записей.
21. Нажмите кнопку "Make the Bookmark". Так, теперь пролистайте ещё дальше или вернитесь, вобщем уйдите от этой записи.
22. Щёлкните на кнопку "Show the Bookmark".
В полях появились записи, на которые Вы и поставили закладку!
А теперь я расскажу немного о поисках записей в базе данных.
Представьте себе, что Вам нужно найти конкретное имя автора из тысяч
других... WOW!!! :-)) Представили? Ну, так вот листать - вроде совсем
не интересно... Нужно воспользовать одним из способов нахождения :
FindFirst, FindLast, FindNext или FindPrevious. В следующей таблице представлены их значения:
Метод Пояснение
FindFirst Ищет первую запись в БД
FindLast Ищет последнюю запись в БД
FindNext Ищет каждую следующую запись в БД
FindPrevious Ищет предыдущую запись в БД
23. Создайте кнопку cmdFind c надписью "Find" и впишите:
Private Sub cmdFind_Click()
'у пользователя запрашивается имя автора а потом происходит
'поиск его в БД
Data1.Recordset.FindFirst "Author = '" _
& Trim(InputBox("Введите имя автора")) & "'"
'если запись не найдена появляется следующая надпись:
If Data1.Recordset.NoMatch Then MsgBox "Имя не найдено"
End Sub
24. Теперь запустите проект. Выищите какое-нибудь имя из БД и нажмите кнопку Find.
25. Введите имя и нажмите ОК. Имя
появилось! Чтобы искалось имя с конца БД слово FindFirst надо поменять
на FindLast. А если Вы хотите проверить БД на наличие одного имени
несколько раз надо применять слово FindNext и каждый раз вызывать поиск!
|