База данных Accese


Работа № 8

Средства VB 6 для создания, заполнения и обработки таблиц баз данных Microsoft Access

Цель работы: Изучение и использование средств, которыми располагают среда проектирования и язык VB 6, для работы с базами данных Microsoft Access. Исследование и использование инструмента VisData (Data Base Manager – Диспетчера баз данных ) для создания файла базы данных и произвольного числа таблиц этой базы, а также стандартного элемента управления Data для заполнения полей таблиц значениями и нестандартного элемента MS Flex Grid для отображения заполненных таблиц на экранной форме. Исследование возможности использования в процедурах на языке VB 6 языка запросов SQL для обработки таблиц базы данных.

Контрольные вопросы:

1. Как с помощью Диспетчера баз данных можно создать новый файл mdb для дальнейшего включения в него произвольного числа таблиц базы данных?

2. Как создается новая таблица в уже созданном файле mdb? Как в таблицу включаются новые поля (столбцы)? Как определяется тип данных включаемого в таблицу поля?

3. Что такое индекс и как с помощью Диспетчера баз данных можно создать индекс и включить его в таблицу?

4. Как присоединить элемент управления Data (Данные ) к одной из таблиц базы данных, содержащихся в файле mdb? Какие два свойства при этом необходимо означить?

5. Какое значение свойства EOF Action элемента управления Data позволяет вносить новые записи в таблицу базы данных?

6. Какие два свойства текстового поля отвечают за “привязку” этого поля к элементу управления Data? Как с помощью “привязанных” текстовых полей вносить данные в таблицу базы данных?

7. Какое свойство элемента Data может иметь в качестве значения не только ссылку на реальную таблицу базы данных, но и выражение языка SQL, с помощью которого создается виртуальная таблица?

8. Как и с помощью какого выражения SQL можно программно создать реальную таблицу в файле базы данных?

9. Как и с помощью какого выражения SQL можно программно удалить все данные из реальной таблицы в файле базы данных?

Пример 8.1. В двух вариантах 1-го задания 7-й работы были рассмотрены две таблицы базы данных “Автосервис”:

– таблица 7.1 “Автомобили”;

– таблица 7.2 “Неисправности”.

Для заполнения этих таблиц значениями, для их визуализации, а также для отработки запросов на SQL создается приложение, экранная форма которого в работающем состоянии показана на рис. 8.1.

Рис. 8.1. Экранная форма приложения для заполнения значениями двух таблиц файла mdb и для отработки запросов на SQL

В данном примере с помощью Диспетчера баз данных (VisData ) среды проектирования VB 6 создается Access файл Автосервис. mdb с указанными двумя таблицами: Cars (Автомобили) и Disrepairs (Неисправности). Технология создания таблиц файла mdb в среде IDE VB 6 описана в пособии [2], стр. 133 – 139.

Для заполнения значениями 1-й таблицы используются текстовые поля Text1 , Text2 и Text3 , привязанные к элементу Data1 , который, в свою очередь, привязан к таблице Cars (Автомобили) файла Автосервис. mdb.

Для заполнения значениями 2-й таблицы используются текстовые поля Text4 , Text5 и Text6 , привязанные к элементу Data2 , который, в свою очередь, привязан к таблице Disrepairs (Неисправности) файла Автосервис. mdb. Технология “привязки” описана в учебном пособии [2] – стр. 140 – 145.

Для визуализации таблиц используются элементы из нестандартного класса “Гибкая сетка данных” (MS Flex Grid ).

После заполнения таблиц пользователь может обратиться к базе данных с запросом на языке SQL. Для этой цели используется команда меню Query. Щелчок этой команды вызывает появление окна Inputbox (рис. 8.2), в котором, “по умолчанию”, уже есть образец выражения SQL. Пользователь, разумеется, может ввести свой вариант запроса.

Рис. 8.2. Окно для ввода запроса на SQL

После ввода запроса и щелчка кнопки ОК происходит автоматическое формирование 3-й таблицы, запись SQL выражения в поле метки и отображение новой таблицы в гибкой сетке – элементе MSFlexGrid3 на экранной форме (см. рис. 8.1).

Опуская описание этапа проектирования интерфейса, сразу представим программный код данного приложения:

Private Sub Form_Load()

With MSFlexGrid1 ‘ Для таблицы Автомобили.

.ColWidth(0) = 500: .ColWidth(1) = 1200

.ColWidth(2) = 1500: .ColWidth(3) = 1000

End With

With MSFlexGrid2 ‘ Для таблицы Неисправности.

.ColWidth(0) = 500: .ColWidth(1) = 1000

.ColWidth(2) = 3000: .ColWidth(3) = 900

End With

With MSFlexGrid3 ‘ Для запроса “по умолчанию”.

.ColWidth(0) = 500: .ColWidth(1) = 1500

.ColWidth(2) = 1200: .ColWidth(3) = 3000

.ColWidth(4) = 900: .ColWidth(5) = 1000

End With

End Sub

Private Sub mnuQuery_Click()

SSQL$ = InputBox(“Введите запрос на SQL, ” &; _

“относительно двух таблиц базы данных”, “SQL”, _

“Select car_number, car_type, disrep_name, ” &; _

“repair_cost, Cars. disrep_code ” &; _

“From Cars Inner Join Disrepairs ” &; _

“On Disrepairs. disrep_code=Cars. disrep_code ” &; _

“Order By repair_cost”)

Data3.RecordSource = sSQL

Data3.Refresh

Label1.Caption = ” SQL: ” &; sSQL

End Sub

Пример 8.2 . Рассмотрим приложение, которое демонстрирует действие массовых операций языка SQL. Для этого добавим на экранную форму примера 8.1 пару элементов, представленных на рис. 8.3. Добавим также команду меню Itogi, с помощью которой будет обрабатываться таблица “Неисправности”.

Рис. 8.3. Вид фрагмента окна приложения с двумя новыми элементами: Data 4 и MSFlexGrid 4 для отображения результатов массовых операций

После щелчка команды Itogi элемент MSFlexGrid4 на экранной форме будет выглядеть так, как показано на рис. 8.3.

Разумеется, что элемент Data4 , как и элемент Data3 , должен быть привязан к тому же файлу mdb, что и элементы Data1 и Data2 . А его свойство RecordSource будет означено в ходе выполнения следующей программы:

Private Sub mnuItogi_Click()

SSQL$ = “Select Count(repair_cost), ” &; _

“CCur(Min(repair_cost)), ” &; _

“CCur(Max(repair_cost)), ” &; _

“CCur(Sum(repair_cost)), ” &; _

“CCur(Avg(repair_cost)) ” &; _

“From Disrepairs”

Data4.RecordSource = sSQL

Data4.Refresh

With MSFlexGrid4

.Row = 0

.Col = 0: .Text = “Показатель”

.Col = 1: .Text = “Количество”

.Col = 2: .Text = “Минимум”

.Col = 3: .Text = “Максимум”

.Col = 4: .Text = “Сумма”

.Col = 5: .Text = “Среднее”

.Row = 1

.Col = 0: .Text = “Значение”

End With

End Sub

В ходе выполнения данной работы студенты должны выполнить 2 задания.

Задание 1. В процессе выполнения задания студенты решают задачу создания не виртуальной таблицы базы данных, как это было в примере 8.1, а реальной таблицы с именем CarDis – в файле mdb. В эту таблицу с помощью SQL запроса должны быть внесены данные из исходных двух таблиц в соответствии с предлагаемым вариантом.

Указание 1 . Для создания новой таблицы можно спроектировать команду меню Create Table. Следует, однако, помнить, что эта команда однократного действия и после создания таблицы эту команду можно либо “закомментировать”, либо уничтожить. Код процедуры для этой команды следующий:

Private Sub mnuCreateTable_Click()

SSQL$ = “Create Table CarDis (car_number Text(20), ” &; _

” car_type Text(20), disrep_name Text(50), ” &; _

” repair_cost Currency, disrep_code Long)”

Data3.Database. Execute sSQL

End Sub

Указание 2. В силу того, что при многократных запусках программы в новую таблицу записи будут добавляться (старые записи при этом удаляться не будут), для очистки таблицы предлагается создать команду меню Delete Table :

Private Sub mnuDeleteTable_Click()

SSQL$ = “Delete From CarDis”

Data3.Database. Execute sSQL

End Sub

Кроме того, необходимо внести небольшие коррективы в код процедуры mnuQuery_ Click (см. пример 8.1): В начало процедуры следует вставить оператор:

MnuDeleteTable_Click

А в конец процедуры следует вставить операторы:

SSQL = “Insert Into CarDis ” &; sSQL

Data3.Database. Execute sSQL

Вариант 1 . В реальную таблицу CarDis внести записи, соответствующие запросу примера 8.1, но с ограничением: стоимость ремонта должна быть не менее 500 рублей, а записи должны быть отсортированы по убыванию стоимости ремонта.

Вариант 2 . В реальную таблицу CarDis внести записи, соответствующие запросу примера 8.1, но с ограничением: стоимость ремонта должна быть не более 500 рублей, а записи должны быть отсортированы по возрастанию стоимости ремонта.

Задание 2. В ходе выполнения задания студенты, на базе примера 8.2 и результата выполнения задания 1 изучают действие массовых операций языка SQL на записях вновь построенной таблицы CarDis базы данных “Автосервис”.

Указание. В SQL выражении, фигурирующем в коде процедуры mnuItogi_ Click, следует изменить только имя таблицы после слова From.

Вариант 1 . Фрагмент экранной формы с результатами должен иметь вид, представленный на рис. 8.4:

Рис. 8.4. Фрагмент экранной формы с элементами FlexGrid3 и FlexGrid4 для демонстрации отработки SQL запросов по 1-му варианту

Вариант 2 . Фрагмент экранной формы с результатами должен иметь вид, представленный на рис. 8.5:

Рис. 8.5. Фрагмент экранной формы с элементами FlexGrid3 и FlexGrid4 для демонстрации отработки SQL запросов по 2-му варианту

К О Н Е Ц



Зараз ви читаєте: База данных Accese