Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Работа с базами данных. Элементы управления Data и DBGrid. Язык SQL




Для работы с базами данных непосредственно изнутри проекта Visual Basic удобно применять элемент управления Data, расположенный в Toolbox. Разместим его на форме. Пусть его имя будет Data1. Прежде всего объясним ему, с каким файлом базы данных он должен работать. Для этого придадим его свойству DatabaseName значение адреса созданного в предыдущем разделе файла. Затем проследим, чтобы свойство Connect имело значение Access, EOFAction - Add New, установим в качестве значения свойства RecordSource (источник записей для работы элемента Data1) имя таблицы нашей базы - Books. Эти свойства можно устанавливать и в режиме работы. Например,

Data1.RecordSource = "Books"

С этого момента вы можете запускать проект и работать с базой данных программным путем. Однако, не очень-то удобно это делать, не видя во время работы саму таблицу базы данных, а Data сам по себе ее не показывает. Способов увидеть ее несколько. Самый лучший - использование элемента управления DBGrid. Находится он так: Project ® Components® Microsoft Data Bound Grid Control 5.0. Разместите его на форме. Пусть его имя будет DBGrid1. Работать он будет в паре с Data, таблицу которого и будет делать видимой в режиме работы. Установим его свойства:

Прежде всего, поскольку в проекте могут присутствовать несколько элементов Data, нужно указать, с каким именно из них будет работать наш DBGrid, другими словами, к кому он будет привязан. Для этого установим значение его свойства DataSource в Data1. Установим также в True следующие свойства DBGrid1: AllowAddNew (разрешить вручную добавлять в таблицу новые записи), AllowDelete (разрешить вручную удалять записи из таблицы), AllowUpdate (разрешить вручную изменять данные в таблице). Можете придать какое-нибудь значение свойству Caption.

 

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

 

 

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

Данные, которые вы вводите в поле, проверяются на принадлежность к типу поля. Обратите внимание, что Visual Basic "укоротил" те даты, которые считает "и так понятными".

Чтобы удалить запись, выделите ее щелчком по серому прямоугольнику слева от записи и нажмите на клавиатуре Delete. Можно расширять и сужать строчки и столбцы, перетаскивая границу между серыми прямоугольниками.

Когда вы завершите выполнение проекта, таблица будет автоматически сохранена в файл.

 

К Data можно привязывать не только DBGrid, но и другие элементы, например текстовые поля. Разместите на форме четыре текстовых поля и свяжите их с Data1. Также каждое из этих полей свяжите при помощи свойства DataField со своим полем таблицы. Запустите проект. Пощелкайте мышкой по разным записям в DBGrid. Вы видите, что значения текстовых полей автоматически становятся равными значениям полей текущей записи таблицы. И наоборот, стоит нам изменить содержимое текстового поля, как меняется соответствующее содержимое таблицы.

 

До сих пор мы меняли содержимое базы данных вручную. Посмотрим, как это можно делать программным способом. Таблица разделена на клетки-ячейки. Существует понятие текущей ячейки (current cell), с которой происходит в настоящий момент работа. Она задается номером записи (DBGrid1.Row) и номером поля (DBGrid1.Col). Свойство DBGrid1.Text означает содержимое текущей ячейки. Самая верхняя запись имеет номер 0, а не 1. То же относится и к самому левому полю. Например, при работе с нашей базой данных фрагмент

DBGrid1.Row = 3

DBGrid1.Col = 1

Debug.Print DBGrid1.Text

напечатает слово Достоевский.

Вот пример процедуры, которая заполняет числами 2, 3, 4 поле Kol_str в записях со 2-й по 4-ю:

Private Sub Command1_Click()

DBGrid1.Col = 3

For i = 2 To 4

DBGrid1.Row = i

DBGrid1.Text = i

Next

End Sub

А вот строка, увеличивающая на одни сутки дату выпуска:

DBGrid1.Text = DateAdd("d", 1, DBGrid1.Text)

SQL

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

Private Sub Command4_Click()

Data1.RecordSource = "SELECT Avtor, Nazvanie, Data FROM Books ORDER BY Data"

Data1.Refresh

End Sub

Выполнив эту процедуру, вы увидите на экране такую таблицу:

 

Avtor Nazvanie Data
Гоголь Сорочинская ярмарка 31.12.1831
Достоевский Белые ночи 30.9.1848
Конан Дойль Затерянный мир 15.11.1920
Ефремов Туманность Андромеды 12.9.57
Стругацкие Понедельник начинается в субботу 3.5.65
Стругацкие За миллиард лет до конца света 14.7.74

 

Пояснения: Выше мы писали строку

Data1.RecordSource = "Books"

имея в виду, что источником данных для работы элемента Data1 будет целиком таблица Books. А вот первая строка нашей процедуры выбирает для работы элемента Data1 только три поля: Avtor, Nazvanie, Data. Действительно, в переводе с английского команда

SELECT Avtor, Nazvanie, Data FROM Books ORDER BY Data

означает

ВЫБРАТЬ Avtor, Nazvanie, Data ИЗ Books УПОРЯДОЧИТЬ ПО Data

То есть работа будет вестись не со всеми полями, а только с тремя перечисленными, причем записи будут упорядочены по возрастанию даты выпуска книги.

Если вместо ORDER BY Data написать ORDER BY Data DESC, то записи будут упорядочены по убыванию даты.

Строка

Data1.Refresh

просто приводит предыдущую команду SELECT в действие.

 

Следующая процедура осуществляет фильтрацию.

Private Sub Command6_Click()

Data1.RecordSource = "SELECT * FROM Books WHERE Kol_str>100"

Data1.Refresh

End Sub

Пояснения: Звездочка в выражении

SELECT * FROM Books

означает, что мы выбираем все поля таблицы Books.

Выражение

WHERE Kol_str >100

переводится

ГДЕ количество страниц >100

и приказывает вывести на экран только те книжки, что толще 100 страниц.

 

Следующая таблица иллюстрирует некоторые другие возможности SQL:

Команда Смысл
SELECT * FROM Books WHERE Avtor = 'Стругацкие' AND Data > #21/11/1970# На экран выводятся книжки Стругацких, выпущенные позже 21 ноября 1970 года. Таким образом, в выражении могут содержаться логические операции. Обратите внимание, что 'Стругацкие' берутся в одинарные кавычки, а не двойные, так как вся команда SELECT сама является ни чем иным, как строкой в операторе присвоения, и вторые двойные кавычки создали бы путаницу.
SELECT TOP3 * FROM Books ORDER BY Data DESC На экран выводятся 3 последние книжки, выпущенные издательством. Выражение ORDER BY Data DESC сортирует записи по убыванию даты, а выражение TOP 3 показывает на экране только верхние 3 записи из отсортированных.
SELECT * FROM Books WHERE Kol_str BETWEEN100 AND 200 На экран выводятся книжки с числом страниц МЕЖДУ 100 И 200.

 

Глава 23. До свидания

Ну вот мы и заканчиваем. Самое время посмотреть, чего мы не сделали и что надо сделать.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 637; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.