Студопедия — Практическая работа 30. ADO
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Практическая работа 30. ADO






30а. ADO: вывод данных в поле списка; добавление/удаление записей в базу данных из проекта

1. Создать на форме 5 полей списка (lstName, lstVorname, lstVatersn, lstGebdat, lstNummer),

2. создать ссылку на библиотеку: Проект Информация рис. 4.5 установить флажок Microsoft ActiveX Data Object 2.0 сделать щелчок на кнопке ОК,

 

Рис. 4.5. MSFlexGrid

3. создать на форме меню (рис. 4.6): Инструменты Редактор меню, данные табл. 4.9 OK,

Таблица 4.9. Данные, используемые при создании меню
Имя Название
mnuDob &Добавить
mnuUd &Удалить
mnuExit &Выход

4. ввести код, данный ниже, пояснения даны под комментариями,

(General) (Declarations) (формы)' описание переменных как объектов подключения и ' набора записейPrivate cn As adodb.ConnectionPrivate rs As adodb.Recordset

Рис. 4.6. Вид формы Form1

Private Sub Form_Activate()' переменная для хранения строки подключения к базе данныхDim cmd As String' переменная для хранения SQL-запросаsql As StringDim cn As adodb.Connection Dim rs As adodb.Recordset' очистить спискиlstName.ClearlstVorname.ClearlstVatersn.ClearlstGebdat.ClearlstNummer.Clear' создать строку подключения. Подключение проводится с помощью' провайдера OLEDB (иначе в строке нужно указать другого провайдера).' Следующий параметр (см. строку программы) определяет имя базы данных.' Строка кода выделяется в отдельную функцию, что позволяет реализовать работу с ' различными источниками данных. Такой функции можно передать параметр.cmd = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security _Info=False;Data Source=A:\db1.mdb"' установить соединение с базой данныхSet cn = New adodb.Connection cn.ConnectionString = cmdcn.Open' создать запросsql = "select * from Таble1" ' открыть набор записей. Открывается объект Recordset, ему нужно передать' SQL-запрос (sql = "select * from Table1"), Set rs = New..... Далее' набор открывается командой rs.Open sql, cn,adOpenDynamic, adLOckOPtimistic' параметр sgl хранит SQL-запрос, второй параметр означает, что для 'подключения к базе нужно использовать объект cn, следующий параметр' определяет тип курсора (табл. 4.10)
  Таблица 4.10. Типы курсоров
Тип курсора Описание
ad OpenForwardOnly Лишь для перебора записей в одном направлении
adOpenKeyset Для большого набора записей
adOpenDynamic Позволяет отслеживать изменения, вносимые другими пользователями в набор записей
adOpenStatic Для небольших наборов

Последний параметр определяет тип доступа к набору записей табл. 4.11

Таблица 4.11. Тип блокировки
Тип блокировки Описание
ad LockReadOnly Использовать, если не нужно добавлять, обновлять или удалять записи
adLockPessimistic Запись блокируется в начале редактирования до его завершения или перехода к следующей записи
adLockOptimistic Включается при вызове метода Update для записи. Запись временно блокируется (на время сохранения изменений в базе)
Set rs = New adodb.Recordset rs.Open sql, cn, adOpenDynamic, adLockOptimisticDo While Not rs.EOF' включить данные в каждый списокlstName.AddItem rs("Name")lstVorname.AddItem rs("Vorname")lstVatersn.AddItem rs("Vatersn")lstGebdat.AddItem rs("Gebdat")lstNummer.AddItem rs ("Nummer")rs.MoveNext ' перейти к следующей записиLoop' закрыть набор записей и очистить объектную переменнуюrs.CloseSet rs = Nothing' закрыть подключение и уничтожить объект подключенияcn.Close: Set cn = NothingEnd SubPrivate Sub mnuDob_Click()' показать форму "Добавление"frmDob.ShowEnd SubPrivate Sub mnuExit_Click()Dim v As Integer ' код возврата' проверка, хочет ли пользователь закончить ' выполнение проектаv = MsgBox("Exit?", vbYesNo + vbQuestion, " Exit?")' число 6 соответствует нажатой кнопке YesIf v = 6 Then End End SubPrivate Sub mnuUd_Click()' показать форму "Удаление"frmUd.ShowEnd Sub

5. добавить новую форму для добавления записей в базу данных, на форме создать 6 элементов управления Label (значения свойств Caption даны на рис. 4.7 5 текстовых полей (txtName, txtVorname, txtVatersn, txtGebdat, txtNummer) и 2 элемента управления CommandButton, рис. 4.7


Рис. 4.7. Вид формы Добавление записи

6. ввести код, данный ниже:

General) (Declarations)Private cn As adodb.Connection Private rs As adodb.RecordsetPrivate Sub Command1_Сlick()Dim rc As String 'код возвратаDim cmd As String, sql As StringDim cn As adodb.Connection, rs As adodb.Recordset' создать строку подключенияcmd = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security _Info=False;Data Source=A:\db1.mdb"' установить соединение с базой данныхSet cn = New adodb.Connectioncn.ConnectionString = cmdcn.Opensql = "select * from Таble1" ' создать запросSet rs = New adodb.Recordset ' открыть набор записейrs.Open sql, cn, adOpenDynamic, adLockOptimistic' проверка, действительно ли пользователь' хочет добавить данныеrc = MsgBox("Add?", vbYesNo + vbQuestion, "Add!")If rc = 6 Then' процесс добавления данных rs.AddNew: rs("Name") = txtNamers("Vorname") = txtVornamers("Vatersn") = txtVatersnrs("Gebdat") = txtGebdatrs("Nummer") = txtNummerrs.UpdateEnd Ifrs.Close: Set rs = Nothingcn.CloseSet cn = Nothing' вывод сообщения о добавлении записи в БДMsgBox "Введенная вами запись добавлена в базу данных!",_ vbOKOnly, "Успешное добавление!"End SubPrivate Sub Command2_Click()' перейти на главную формуUnload Me: Form1.ShowEnd Sub

7. добавить новую форму для работ по удалению записей из базы данных, создать на форме элементы управления Label, TextВox (Name= txtQuery), 2 элемента управления CommandButton, рис. 4.8

Рис. 4.8. Вид формы Form3. Удаление записи

8. ввести код:

Private cn As adodb.ConnectionPrivate rs As adodb.RecordsetPrivate Sub Command1_Сlick()Dim rc As Integer 'код возвратаDim cmd As String, sql As String, cn As adodb.ConnectionDim rs As adodb.Recordset' создание SQL-запроса sql = "SELECT Таble1.Nummer From Таble1 WHERE_(((Таble1.Nummer) = "_sql = sql & """" & txtQuery.Text & """" &"));"' создать строку подключенияcmd = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security _Info=False;Data Source=A:\db1.mdb"' установить соединение с базой данныхSet cn = New adodb.Connection cn.ConnectionString = cmdcn.Open ' открыть набор записейSet rs = New adodb.Recordset rs.Open sql, cn, adOpenDynamic, adLockOptimistic' проверка, действительно ли пользователь хочет ' удалить данныеrc = MsgBox("Yes or No?", vbYesNo + vbQuestion, "Del)If rc = 6 Thenrs.Delete ' процесс удаленияMsgBox "Запись из базы данных удалена!", _vbInformation + vbOKOnly, "Удаление выполнено!"End Ifrs.Close:Set rs = Nothingcn.CloseSet cn = NothingEnd SubPrivate Sub Command2_Click()Unload Me: Form1.ShowEnd Sub

9. cтартовать проект, при этом выводятся данные в поля ListBox, ввести записи в базу данных из проекта, удалить записи.

30b. Элемент управления ADO Data: вывод данных, добавление записей в таблицу из проекта, выполнение SQL-запроса, вывод результатов

В данной работе рассматриваeтся:

· создание базы данных (ado.mdb) с использованием Visual Data Manager,

· вывод с помощью ADO Data Control данных таблицы saleslist, см. табл. 4.12, в текстовое поле,

· выполнение SQL-запроса и вывод результатов.

·

Таблица 4.12. Содержимое таблицы базы данных saleslist
Name of product Price Quantity Total
tvset      
computer      
Fax      
telephone      
scaner      

Порядок выполнения:

· создать на форме 4 элемента управления TextBox и 4 элемента управления Label (установить свойства Caption каждого элемента соответственно - Name of product, Price, Quantity, Total, рис. 4.9

·

Рис. 4.9. Вид формы

· cоздать базу данных с использованием Visual Data Manager, для этого:

o выполнить команды: Модули Visual Data Manager File New Microsoft Access Version 7.0 MDB, рис. 4.10

Рис. 4.10. Visual Data Manager

o ввести название: ado сохранить,

o в диалоговом окне Database Window сделать щелчок правой клавишей мыши. В появившемся меню выбрать New Table, рис. 4.11

Рис. 4.11. Таблица Structure

o задать имя таблицы: saleslist,

o в диалоговом окне Table Structure сделать щелчок на кнопке Add field, рис. 4.12

Рис. 4.12. Окно Add Field

o в диалоговом окне Add Field в соответствующие поля ввести имена полей таблицы и типы данных, делать щелчок на кнопке ОК после каждого ввода:

o name_of_product, text,o price currencyo quantity bytetotal currency

o сделать щелчок на кнопке Close,

o в диалоговом окне Table Structure сделать щелчок на кнопке Build the Table, которая стала активной, рис.4.13

Рис. 4.13. Database Window

o в окне Database Window сделать двойной щелчок на поле saleslist, рис. 4.14

Рис. 4.14. Построение таблицы saleslist

o в диалоговом окне динамического набора Dynaset: saleslist сделать щелчок на кнопке Add, рис. 4.15

Рис. 4.15. Построение таблицы, продолжение

o вводить данные, после ввода каждой записи делать щелчок на кнопке Update, затем снова Add и т.д,

o в окне Dynaset: saleslist сделать щелчок на кнопке Close; в окне Visdata выполнить команды: File Exit. Создание базы данных ado.mdb завершено; файл базы данных сохраняется на дисковом устройстве в каталоге (system32),

· для вывода элемента управления ADO Data выполнить следующее: Проект -> Компоненты -> Microsoft ADO Control 6.0 (OLEDB),рис. 4.16

Рис. 4.16. Microsoft ADO Data Control

· поместить элемент управления ADO Data на форму, рис. 4.17

Рис. 4.17. Элемент управления на форме

· присвоить значение свойства ConnectionString, рис. 4.18

Рис. 4.18. Окно Property Pages

· в диалоговом окне Property Pages сделать щелчок на кнопке Build, рис. 4.19

Рис. 4.19. Поставщики услуг

· в диалоговом окне Свойства связи с данными выбрать из списка поставщиков услуг Microsoft Jet 3.51 (или Microsoft Jet 4.0, если имеется в наличии), рис. 20. Эти поставщики используются при соединении источника данных, для которого не существует провайдера OLE DB, с другим источником данных OLE DB. Для баз данных Microsoft SQL Server используется Microsoft OLE DB Provider for SQL Server и т. д,

· в диалоговом окне Свойства связи с данными сделать щелчок на кнопке Далее. Перейти к регистру Подключение, рис. 4.20

Рис. 4.20. Регистр Подключение

· найти в дереве файлов базу данных ado.mdb, выбрать в списке имя базы данных ado.mdb. Использовать имя пользователя - admin, рис. 4.20

· сделать щелчок на кнопке Проверить подключение, если при этом выводится сообщение "Подключение успешно", то сделать щелчок на кнопке ОК,

· в диалоговом окне Свойства связи с данными сделать щелчок на кнопке ОК; cтроится строка "Provider:, путь к базе данных" в окне Property Pages, рис. 4.18 В диалоговом окне Property Pages сделать щелчок на кнопке ОК,

· присвоить значение свойству RecordSource для элемента данных ADO, рис. 4.21 следующим образом:

Рис. 4.21. Окно Property Pages

· в диалоговом окне Property Pages выбрать для Command Type значение 2-adCmdTable, а для Table or Stored Procedure Name - saleslist OK. Теперь установлена связь с базой данных ado.mdb и можно начать работу c элементами управления TextBox,

· присвоить свойству DataSource каждого элемента управления TextBox значение Adodc1; а свойству DataField (см. также поля Label) каждого элемента управления TextBox (соответственно) - name_of_product, price, quantity, total,

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


Рис. 4.22. Вид формы после старта проекта

· для добавления записей в таблицу базы данных выполнить следующее:

o остановить выполнение проекта,

o изменить значение свойства EOFAction объекта Adodc1 с 0 - adDoMoveLast на 2 - adDoAddNew,

· стартовать проект и заполнить пустую запись, следующую после пятой записи, например, следующим образом: printer 800 10 8000.

Замечание: для проверки (внесения записи) стартовать Visual Data Manager, двойным щелчком открыть и просмотреть таблицу. Переходить от одного поля TextBox к другому можно либо с помощью курсора мыши, либо с помощью клавиши Tab,

· остановить выполнение проекта,

· для выполнения SQL-запроса - для вывода в поле TextBox, например, наименования тех продуктов, стоимость которых равна 4000 (или больше 5000) выполнить следующее:

o поместить на форму ещe один элемент управления (Adodc2) и еще один элемент управленияTextBox,

o установить значение ConnectionString для элемента управления Adodc2 то же, что и у Adodc1 OK,

o при установке значения RecordSource в диалоговом окне Property Pages выбрать для Command Type значение 1 - adCmdText, а для Command Text (SQL) ввести запрос: Select * from saleslist where total=4000 (или total>5000)

o установить свойства TextBox следующим образом: DataSource - Adodc2, DataField - name_of_product (название того поля, записи которого должны быть выведены в поле TextBox),

· стартовать проект, наблюдать результаты, для этого перелистывать данные, используя стрелки > <.

30c. ADO: вывод данных в MSFlexGrid; добавление записей в базу данных из проекта Visual Basic, поиск, удаление данных

Рассматриваются следующие задачи:

1. создание базы данных с помощью редактора Visual Data Manager,

2. создание связи с базой данных с использованием ADO,

3. вывод таблицы в поле элемента управления MsFlexGrid (см. Form1),

4. добавление новых записей в таблицу базы данных (см. процедуру Command1_Click ()),

5. обновление записей в элементе управления MsFlexGrid (см. процедуру Command5_Click ()),

6. отбор записей по введенному критерию (см. процедуру Command2),

7. удаление записи (см. процедуру Command3_Click ()).

Последовательность действий:

· создать базу данных с помощью Visual Data Manager:

· Добавления Visual Data Manager File New Microsoft Access Version7.0 MDB:, в открывшемся диалоговом окне ввести название базы данных (Inf.mdb) OK,

· в окне Database window сделать щелчок на правой кнопке мыши и выбрать New Table,

· в поле Table name ввести имя таблицы (Clients). Чтобы ввести названия полей таблицы сделать щелчок на кнопке Add Field. В открывшемся диалоговом окне в поле Name ввести название поля OK,

· ввести следующие названия: Name, FirstName, Experience, Marital, Status, Age, Post -> Close. В диалоговом окне Table Structure появились названия полей таблицы,

· сделать щелчок на кнопке Close. В окне Database window появилось название таблицы. Открыть ее двойным щелчком. Чтобы внести данные в таблицу, сделать щелчок на кнопке Add, после внесения - на кнопке Update (рис. 4.23) После того, как заполнили таблицу, закрыть все окна, кроме окна проекта,

Рис. 4.23. Cоздание таблицы

Созданная таблица имеет вид (рис. 4.24):

Рис. 4.24. Содержание таблицы

· сделать ссылку на библиотеку ADODB (Microsoft ActiveX Data Objects Library 2.1): Проект Ссылки Microsoft ActiveX Data Objects Library 2.1 - OK,

· создать на форме 4 элемента управления Command Вutton и элемент управления MsFlexGrid. Свойствам Captionэлементов управления Command Вutton присвоить значения: Добавить, Поиск, Удалить, Выход, Обновить,

· для добавления элемента управления MsFlexGrid выполнить следующее: Проект Компоненты Microsoft FlexGrid Control 6.0,

· ввести код, данный ниже:

' описание переменных cn (соединение с базой данных)' и rs (набор записей базы данных)Private cn As ADODB.ConnectionPrivate rs As ADODB.RecordsetPrivate Sub Form_Load()' cmd содержит адрес базы данныхDim cmd As String' sql - SQL-запрос Dim sql As String' установить соединение с базой данных' и открыть набор записейDim cn As ADODB.ConnectionDim rs As ADODB.Recordsetcmd = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _"C:\Program Files\Microsoft Visual Studio\" & "VB98\Inf.mdb"Set cn = New ADODB.Connection ' cоздать новое соединение:With cn' свойству ConnectionString объекта cn присвоить ' значение cmd.ConnectionString = cmd.OpenEnd With' cоздать SQL запрос, открывающий всю таблицу Clientssql = "select * from Clients" Set rs = New ADODB.Recordset 'создать новый набор записей:With rs' oткрыть таблицу:.Open sql, cn, adOpenKeyset, adLockOptimisticEnd With' данные вывести в поле элемента MSFlexGrid1: число ' столбцов в MSFlexGrid' равно числу полей в таблице.MSFlexGrid1.Cols = rs.Fields.CountMSFlexGrid1.Rows = 1 ' число строк = 1' вывести названия полей базы данных:For i = 0 To rs.Fields.Count - 1MSFlexGrid1.TextMatrix(0, i) = rs.Fields(i).NameNext I' заполнить остальные строки:Do Until rs.EOFMSFlexGrid1.Rows = MSFlexGrid1.Rows + 1For i = 0 To rs.Fields.Count - 1If Not rs.Fields(i) = "" ThenMSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = rs.Fields(i)End IfNext irs.MoveNextLooprs.Close: Set rs = Nothingcn.Close: Set cn = NothingEnd Sub

стартовать проект и наблюдать данные таблицы в MSFlexGrid1, рис. 4.25

Рис. 4.25. Вид формы после старта проекта

· ввести код процедуры Command1_Click(), которая будет добавлять записи в базу данных:

Private Sub Command1_Click()' описание массивов названий Dim k(7) As Variant, z(7) As Variant Dim cmd As StringDim sql As StringDim cn As ADODB.Connection: Dim rs As ADODB.Recordsetcmd = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _"C:\Program Files\Microsoft Visual Studio\" & "VB98\Inf.mdb"Set cn = New ADODB.ConnectionWith cn.ConnectionString = cmd.OpenEnd Withsql = "select * from Clients "Set rs = New ADODB.Recordsetrs.CursorType = adOpenDynamicWith rs.Open sql, cn, adOpenKeyset, adLockOptimisticEnd WithWith rs.MoveLastDim f As Field ' описание переменной f как объект поле' в массиве k(t) запомнить названия всех полейFor Each f In rs.Fieldst = t + 1k(t) = f.Name' в массив z(t) занести значения, ' которые будут вводиться пользователем в таблицуz(t) = InputBox("Введите данные для занесения _в поле " & k(t), "Добавления")NextWith rs' добавить строку в таблицу.AddNew Array(k(1), k(2), k(3), k(4), k(5), k(6), k(7)), _Array(z(1), z(2), z(3), z(4), z(5), z(6), z(7))End Withrs.Close: Set rs = Nothingcn.Close: Set cn = Nothing End Sub

· стартовать проект,

· после щелчка на кнопке "Добавить" выводится окно ввода и пользователь должен ввести данные для занесения в таблицу, однако введeнные данные можно наблюдать лишь после обновления записей MSFlexGrid, см. код процедурыCommand5_Click() "Обновить"

Private Sub Command5_Click()Dim cmd As String: Dim sql As StringDim cn As ADODB.Connection: Dim rs As ADODB.Recordsetcmd = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _"C:\Program Files\Microsoft Visual Studio\" & "VB98\Inf.mdb"Set cn = New ADODB.ConnectionWith cn.ConnectionString = cmd.OpenEnd Withsql = "select * from Clients "Set rs = New ADODB.RecordsetWith rs.Open sql, cn, adOpenKeyset, adLockOptimisticEnd WithMSFlexGrid1.Cols = rs.Fields.CountMSFlexGrid1.Rows = 1For i = 0 To rs.Fields.Count - 1MSFlexGrid1.TextMatrix(0, i) = rs.Fields(i).NameNext iDo Until rs.EOFMSFlexGrid1.Rows = MSFlexGrid1.Rows + 1For i = 0 To rs.Fields.Count - 1If Not rs.Fields(i) = "" ThenMSFleGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i) = rs.Fields(i)End IfNext irs.MoveNextLooprs.Close: Set rs = Nothingcn.Close: Set cn = NothingEnd Sub

· провести поиск в соответствии с некоторым критерием

Private Sub Command2_Click()Dim cmd As String: Dim sql As StringDim cn As ADODB.Connection: Dim rs As ADODB.Recordsetcmd = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _"C:\Program Files\Microsoft Visual Studio\" & "VB98\Inf.mdb"Set cn = New ADODB.ConnectionWith cn.ConnectionString = cmd.OpenEnd With' переменные Po и Kr служат для хранения критериев поиска:Po = InputBox("Введите названия полей, в которых будет_проводиться поиск")Kr = InputBox("Введите критерий, в соответствии с которым будет проводиться поиск")' ввести SQL запрос, в соответствии с которым выводятся ' только те строки, которые соответствуют критериюsql = "Select * From Clients Where " & Po & KrSet rs = New ADODB.RecordsetWith rs' открыть только те строки таблицы, которые' соответствуют критерию.Open sql, cn, adOpenKeyset, adLockOptimisticEnd With' внести изменения в MSFlexGrid1:MSFlexGrid1.Cols = rs.Fields.CountMSFlexGrid1.Rows = 1For i = 0 To rs.Fields.Count - 1MSFlexGrid1.TextMatrix(0, i) = rs.Fields(i).NameNext iDo Until rs.EOFMSFlexGrid1.Rows = MSFlexGrid1.Rows + 1For i = 0 To rs.Fields.Count - 1If Not rs.Fields(i) = "" ThenMSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, i)_= rs.Fields(i)End IfNext irs.MoveNextLooprs.Close: Set rs = Nothingcn.Close: Set cn = NothingEnd Sub

· стартовать проект и сделать щелчок на кнопке "Поиск". Ввести данные. Наблюдать за изменениями в MSFlexGrid1.

· удаление выбранных записей

Private Sub Command3_Click()Dim cmd As String: Dim sql As StringDim cn As ADODB.Connection: Dim rs As ADODB.Recordsetcmd = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" &_"C:\Program Files\Microsoft Visual Studio\" & "VB98\Inf.mdb"Set cn = New ADODB.ConnectionWith cn.ConnectionString = cmd.OpenEnd Withsql = "select * from Clients"Set rs = New ADODB.RecordsetWith rs.Open sql, cn, adOpenKeyset, adLockOptimistic' переменной fa присвоить значение - фамилию, которую' хотим удалить вместе с соответствующей записьюfa = InputBox("Введите фамилию для удаления _соответствующей записи")' найти запись с такой фамилией и удалить ееDo Until.EOFIf rs("FirstName") = fa Thenrs.Delete adAffectCurrentEnd If.MoveNextLoopEnd Withrs.Close: Set rs = Nothingcn.Close: Set cn = NothingEnd Sub

· стартовать проект, сделать щелчок на кнопке "Удалить", ввести требуемые данные, затем сделать щелчок на кнопке "Обновить", при этом удаляется выбранная запись.

Private Sub Command4_Click()EndEnd Sub

Практическая работа 31. Программное создание базы данных и работа с ней: создание файла, базы данных, двух таблиц, отношения, заполнение таблиц в диалоговом режиме, создание SQL-запроса и вывод результатов

Задание: создать программным способом:

1. файл базы данных,

2. две таблицы см. рис. 4.26рис. 4.27 рис. 4.28, ключевые поля таблиц,

3. отношение,

4. возможность ввода записей таблиц в диалоговом режиме,

5. SQL-запрос для получения информации о данных клиентов (номер, фамилия, разряд, коэффициент тарифной сетки),

6. реализовать вывод результатов запроса.

Рис. 4.26. Таблица 1(Таrif)

Рис. 4.27. Таблица 2 (Kunde)

Рис. 4.28. Таблица 2 (Kunde), режим конструктора (имя поля, тип данных)

Пример выполнения практической работы 31.

Cоздать форму Form1, рис. 4.29и меню, табл. 4.13

Рис. 4.29. Форма Form1, внешний вид. Создано меню и указана последовательность выполнения задания

Таблица 4.13. Меню
File Table Record Set Relation Query Exit
Create Tab1 Record Set Table1   Create  
        Query  
Open Tab1 Record Set Table2   Open  
        Query  

Здесь:

o Form Create (рис. 4.31) - создать файл базы данных,

o Table Tab1 - создать структуру таблицы 1,

o Table Tab2 - создать структуру таблицы 2 (рис. 4.28),

o RecordSet RecordSetTable1 - в диалоговом режиме создать записи таблицы1 (рис. 4.33),

o RecordSet RecordSetTable2 - в диалоговом режиме создать записи таблицы2 (рис. 4.34),

o Relation - создать отношение,

o Query - CreateQuery - создать запрос,

o Query - OpenQuery - открыть запрос (рис. 4.35),

o Exit - завершить выполнение проекта,

o создать Стандартный модуль и 5 форм, рис. 4.30


Рис. 4.30. Окно проекта - составляющие проекта

o ввести код формы Form1, пояснения даны под комментариями:

Private Sub mnuCreate_Click() ' создать файл базы данныхLoad FrmCreateFrmCreate.ShowEnd SubPrivate Sub mnuCreateQuery_Click() ' создать запросCall QueryEnd SubPrivate Sub mnuExit_Click() ' завершение работы проектаCall DatabaseCloseUnload Form1MsgBox ("Завершение работы проекта!?"), vbCritical + vbOKOnlyEndEnd SubPrivate Sub mnuOpen_Click() ' выбрать файл для его' последующего открытияLoad FrmOpenFrmOpen.ShowEnd SubPrivate Sub mnuOpenQuery_Click() ' открыть запросLoad FrmQueryFrmQuery.ShowEnd SubPrivate Sub mnuRecordSetTab1_Click() ' создать записи в таблице 1Load FrmTarifFrmTarif.ShowEnd SubPrivate Sub mnuRecordSetTab2_Click()' создать записи в' таблице 2Load FrmKundeFrmKunde.ShowEnd SubPrivate Sub mnuRelation_Click() ' создать отношениеCall RelationEnd SubPrivate Sub mnuTab1_Click() ' создать структуру таблицы 1Call Tab1End SubPrivate Sub mnuTab2_Click() ' создать структуру таблицы 2Call Tab2End Sub

o ввести код модуля, данный ниже; пояснения даны под комментариями:

(General) (Declarations)Public NewDB As DatabasePublic NewWS As WorkspacePublic NewTbl As TableDef1Public NewTbl As TableDef2Public idx1 As IndexPublic idx2 As IndexPublic NewRel As RelationPublic sqlquery As QueryDefPublic NewRec As RecordsetPublic Sub Tab1() ' создание таблицы 1Set NewTbl1 = NewDB.CreateTableDef("Tarif")Set f1 = NewTbl1.CreateField()Set f2 = NewTbl1.CreateField() f1.Name = "Razrjad" ' имя поляf1.Type = dbInteger ' тип данныхf2.Name = "Koeffcnt"f2.Type = dbSingleNewTbl1.Fields.Append f1NewTbl1.Fields.Append f2Set idx1 = NewTbl1.CreateIndex("TarifIndex") ' создание индексаIdx1.Primary = TrueSet f1 = idx1.CreateField("Razrjad") ' создание индексного поля' (используется метод объета idx)idx1.Fields.Append f1NewTbl1.Indexes.Append idx1NewDB.TableDefs.Append NewTbl1MsgBox ("Создана структура таблицы Tarif"), vbInformation +_vbOKOnlyEnd SubPublic Sub Tab2() ' создание таблицы 2Set NewTbl2 = NewDB.CreateTableDef("Kunde")' создание полей таблицыSet f3 = NewTbl2.CreateField()Set f4 = NewTbl2.CreateField()Set f6 = NewTbl2.CreateField()' присваивание имeн полям и типов даннымf3.Name = "Tabnumber"f3.Type = dbIntegerf4.Name = "Nam"f4.Type = dbTextf4.Size = 20f4.AllowZeroLength = True' здесь позднее (см. Public Sub Relation) будет создано ' зависимое поле (f5) отношенияf6.Name = "Razrjad"f6.Type = dbInteger' добавление полей в таблицуNewTbl2.Fields.Append f3NewTbl2.Fields.Append f4NewTbl2.Fields.Append f6' создание индексаSet idx2 = NewTbl2.CreateIndex("KundeIndex")' указание того, что главный индекс существуетidx2.Primary = True' создание индексного поляSet f3 = idx2.CreateField("Razrjad")Idx2.Fields.Append f3NewTbl2.Indexes.Append idx2NewDB.TableDefs.Append NewTbl2MsgBox ("Создана структура таблицы Kunde!"), vbOKOnly +_vbInformationEnd SubPublic Sub Relation() ' создание отношенияSet NewRel = NewDB.CreateRelation("RelKunde") ' используется' метод Создать отношение объекта База данных' указание главной таблицы в отношенииNewRel.Table = "Tarif"' указание зависимой таблицы в отношенииNewRel.ForeignTable = "Kunde"' создание зависимого поля в отношенииSet f5 = NewRel.CreateField("Razrjad")' указание имени зависмого поля, по которому ' строится отношениеf5.ForeignName = "Razrjad"NewRel.Fields.Append f5' добавление отношения в базу данныхNewDB.Relations.Append NewRelMsgBox ("Отношение создано!"), vbOKOnly + vbInformationEnd SubPublic Sub Query() ' создание запросаSet sqlquery = NewDB.CreateQueryDef("sql1")' указание того, что требуется выбрать в запросе,' из каких таблиц провести выбор и формулировка ' cоответствующих условий sqlquery.SQL = "SELECT Kunde.Tabnumber, Kunde.Nam, _Kunde.Razrjad, Tarif.Razrjad, Tarif.Koeffcnt _FROM Tarif INNER JOIN Kunde ON Tarif.Razrjad = Kunde.Razrjad _WHERE Kunde.Tabnumber = 2;"MsgBox (" SQL-запрос введeнi!"), vbOKOnly + vbInformationEnd SubPublic Sub CreateFile() ' создание файла базы данныхSet NewWS = DBEngine.Workspaces(0)Set NewDB = NewWS.CreateDatabase(FrmCreate.txtPath.Text,_ dbLangCyrillic)MsgBox (""Файл в формате mdb создан!"), vbInformationUnload FrmCreateEnd SubPublic Sub DatabaseClose() NewWS.CloseSet NewWC = NothingEnd SubSub Main() ' начало проектаresp = MsgBox("Здравствуйте! Программное создание базы_ данных и работа с ней. Выберите ДА или НЕТ!", vbYesNo, " ")If resp = vbYes ThenMsgBox "Сделайте щелчок на кнопке ОК для продолжения диалога!"Load Form1Form1.ShowEnd IfEnd Sub

o на форме FrmCreate, рис. 4.31 создать требуемые объекты и ввести код, данный ниже:

Рис. 4.31. Форма FrmCreate (drvDrive, dirDirect, txtPaht)

Private Sub Cancel_Click()Unload MeEnd SubPrivate Sub Create_Click()Call CreateFileEnd SubPrivate Sub dirDirect_Change()filFile.Path = dirDirect.PathEnd SubPrivate Sub drvDrive_Change()dirDirect.Path = drvDrive.DriveEnd SubPrivate Sub Path_Click() ' вывод пути и имени файла в' поле txtPath If drvDrive.Drive = "a:" ThendirDirect.Path = "a:\"txtPath.Text = dirDirect.Path + filFile.FileNameElsetxtPath.Text = dirDirect.Path + "\" + filFile.FileNameEnd IfEnd Sub

o на форме FrmOpen, рис. 4.32, создать требуемые объекты и ввести код, данный ниже:

Рис. 4.32. FrmOpen (drvDrive, dirDirect, txtPaht)

Private Sub Cancel_Click()Unload MeEnd SubPrivate Sub Com1_Click() ' пометить требуемый файл и ' перейти к Form1MsgBox ("Файл:" + FrmOpen.txtPath.Text), vbInformation FrmOpen.Hide End SubPrivate Sub dirDirect_Change()filFile.Path = dirDirect.PathEnd SubPrivate Sub drvDrive_Change()dirDirect.Path = drvDrive.DriveEnd SubPrivate Sub filFile_Click()If Right(dirDirect.Path, 1) = "\" ThentxtPath = dirDirect.Path + filFile.FileNameExit SubElsetxtPath.Text = dirDirect.Path + "\" + filFile.FileNameEnd IfEnd Sub

o на форме FrmTarif, рис. 4.33 создать требуемые объекты и ввести код, данный ниже:

Private Sub Cancel_Click() 'Unload MeEnd SubPrivate Sub Com1_Click() ' добавить' открывает буфер для очередной записи в таблицеdatTarif.Recordset.AddNewEnd SubPrivate Sub Com2_Click() ' обновить' сбрасывает содержимое буфера для того, чтобы' изменения были зафиксированы в записиdatTarif.UpdateRecordEnd Sub Private Sub Com3_Click() ' выходUnload MeEnd SubPrivate Sub Com4_Click() ' удалить' уничтожает запись таблицыdatTarif.Recordset.DeleteEnd SubPrivate Sub Com5_Click() ' восстановить' если изменено содержимое записи, но ещё не обновлено,' то восстановится предыдущее значение поляdatTarif.UpdateControlsEnd SubPrivate Sub Com6_Click() ' вперёдdatTarif.Recordset.MoveNextIf datTarif.Recordset.EOF ThenMsgBox "Конец таблицы!", vbOKOnly + vbInformation, " "datTarif.Recordset.MoveLastEnd IfEnd SubPrivate Sub Com7_Click() ' назадdatTarif.Recordset.MovePreviousIf datTarif.Recordset.BOF ThenMsgBox "Hачало таблицы!", vbOKOnly + vbInformation, " "datTarif.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Com8_Click() ' к первой записиdatTarif.Recordset.MoveFirstEnd SubPrivate Sub Com9_Click() ' к последней записиdatTarif.Recordset.MoveLastEnd SubPrivate Sub Exit_Click() ' выходUnload MeEnd SubPrivate Sub Form_Load()Set NewDB = Worspaces(0).OpenDatabase(FrmOpen.txtPath.Text)' установка свойств элементов управленя Data и TextBox datTarif.DatabaseName = FrmOpen.txtPath.TextdatTarif.RecordSource = "Tarif"' txtRazrjad.DataSource = "datTarif" ' можно испоьзовать окно ' свойств' txtKoeffcnt.DataSource = "datTarif"txtRazrjad.DataField = "Razrjad"txtKoeffcnt.DataField = "Koeffcnt"End Sub

Рис. 4.33. Форма FrmTarif

o на форме FrmKunde, рис. 4.34 создать требуемые объекты и ввести код, данный ниже:

Private Sub Cancel_Click()Unload MeEnd SubPrivate Sub Com1_Click() ' добавитьdatKunde.Recordset.AddNewEnd SubPrivate Sub Com2_Click() ' обновитьdatKunde.UpdateRecordEnd SubPrivate Sub Com3_Click() ' выходUnload MeEnd SubPrivate Sub Com4_Click() ' удалитьdatKunde.Recordset.DeleteEnd SubPrivate Sub Com5_Click() ' восстановитьdatKunde.UpdateControlsEnd SubPrivate Sub Com6_Click() ' вперeд (к следующей записи)datKunde.Recordset.MoveNextIf datKunde.Recordset.EOF ThenMsgBox "Конец таблицы!", vbOKOnly + vbInformation, " "datKunde.Recordset.MoveLastEnd IfEnd SubPrivate Sub Com7_Click() ' назад (к предыдущей записи)datKunde.Recordset.MovePreviousIf datKunde.Recordset.BOF ThenMsgBox "Начало таблицы!", vbOKOnly + vbInformation, " "datKunde.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Com8_Click() ' в начало таблицыdatKunde.Recordset.MoveFirstEnd SubPrivate Sub Com9_Click() ' в конец таблицыdatKunde.Recordset.MoveLastEnd SubPrivate Sub Exit_Click() ' выходUnload MeEnd SubPrivate Sub Form_Load()Set NewDB = Worspaces(0).OpenDatabase(FrmOpen.txtPath.Text)' yстановка свойств элементов управления Data иTextBoxdatKunde.DatabaseName = FrmOpen.txtPath.TextdatKunde.RecordSource = "Kunde"' txtTabnumber.DataSource = "datKunde" ' можно' использовать окно свойств' txtNam.DataSource = "datKunde"' txtRazrjad.DataSource = "datKunde"txtRazrjad.DataField = "Razrjad"txtNam.DataField = "Nam"txtTabnumber.DataField = "Tabnumber"End Sub

Рис. 4.34. Форма FrmKunde

o на форме FrmQuery, рис. 4.35 создать требуемые объекты и ввести код, данный ниже:

Private Sub Cancel_Click()Unload MeEnd SubPrivate Sub Com1_Click() ' к первой записиNewRec.MoveFirstCall showfieldsEnd SubPrivate Sub Com2_Click() ' к последней записиNewRec.MoveLastCall showfieldsEnd SubPrivate Sub Com3_Click() ' к следующей записиNewRec.MoveNext' если достигнут конец таблицы, то выдаeтся ' соответствующее сообщение и проводится переход к ' последней записиIf NewRec.EOF ThenMsgBox "Kонец таблицы!", vbOKOnly + vbInformation, " "NewRec.MoveLastEnd IfCall showfieldsEnd SubPrivate Sub Com4_Click() ' к предыдущей записи таблицыNewRec.MovePrevious' если достигнуто начало таблицы, то выдаeтся ' соответствующее сообщение и проводится переход' к первой записиIf NewRec.BOF ThenMsgBox "Hачало таблицы!", vbOKOnly + vbInformation, " "NewRec.MoveFirstEnd IfCall showfieldsEnd SubPrivate Sub Exit_Click()NewDB.CloseSet NewDB = NothingUnload MeEnd SubPrivate Sub Form_Load()Set NewWS = DBEngine.Workspaces(0)Set NewDB = NewWS.OpenDatabase(FrmOpen.txtPath.Text)' указатель на набор данных создаeтся с помощью метода ' Recordset объекта Database. Синтаксис:' Set RecordSet = Database.OpenRecordSet ("имя_таблицы или' SQL-запроса, из которых берут данные", dbName), здесь ' dbName - константа, которая определяет тип размещения' данных. В основном используется dbname = dbOpenDynaset' - размещение данных в виде динамического набора, ' открывающего полный доступ к таблицам: перемещение, ' индексирование, редактировние и т.д.Set NewRec = NewDB.OpenRecordset("sql1", dbOpenDynaset)Call showfieldsEnd SubPrivate Sub showfields()' используемый синтаксис: NewRec(name), где NewRec - ' указатель на объект Recordset, name - имя поляtxtTabnumber.Text = NewRec("Tabnumber")txtName.Text = NewRec("Nam")txtRazrjad.Text = NewRec("Tarif.Razrjad")txtKoeffcnt.Text = NewRec("Koeffcnt")End Sub

Рис. 4.35. Форма FrmQuery

· стартовать проект, рис. 4.36 Последовательность действий пользователя дана на форме Form1 (рис. 4.29). На рис. 4.37 даны результаты запроса (см. также рис. 4.35- форма FrmQuery). На рис. 4.38 запрос представлен на бланке запроса, на рис. 4.39 запрос представлен в SQL -форме. Эти данные взяты из файла базы данных (см. регистр Запрос базы данных),

· остановить выполнение проекта (рис. 4.38). Использовать кнопку Exit формы FrmQuery (рис. 4.35) и пункт меню Exit первой формы,рис. 4.29

Рис. 4.36. Старт проекта

Рис. 4.37. Результаты запроса

Рис. 4.38. Запрос на бланке запроса

Рис. 4.39. Запрос в SQL-форме

Рис. 4.40. Завершение выполнения проекта

Лекция 5:







Дата добавления: 2015-06-12; просмотров: 665. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Предпосылки, условия и движущие силы психического развития Предпосылки –это факторы. Факторы психического развития –это ведущие детерминанты развития чел. К ним относят: среду...

Анализ микросреды предприятия Анализ микросреды направлен на анализ состояния тех со­ставляющих внешней среды, с которыми предприятие нахо­дится в непосредственном взаимодействии...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Субъективные признаки контрабанды огнестрельного оружия или его основных частей   Переходя к рассмотрению субъективной стороны контрабанды, остановимся на теоретическом понятии субъективной стороны состава преступления...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия