- •СОДЕРЖАНИЕ
- •1.1. Эволюция технологии программирования
- •1.2. Сущность технологии объектно-ориентированного программирования
- •1.3. Использование объектных моделей при организации удаленных соединений
- •2.1. Классификация объектов БД
- •2.2. Свойства и особенности элементов языка
- •2.3. Создание и удаление баз данных
- •2.4. Создание и модификация таблиц баз данных
- •ЛЕКЦИЯ 3.
- •РАБОТА С ДАННЫМИ В ЯЗЫКЕ TRANSACT-SQL
- •3.2. Создание
- •3.3. Команды манипуляции данными
- •4.1. Стандарты синтаксиса Transact-SQL
- •4.3. Курсоры
- •5.1. Разграничение прав доступа
- •5.3. Пользователи
- •5.6. Командные манипуляции с БД
- •5.7. Связанные и удаленные серверы
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ЛАБОРАТОРНАЯ РАБОТА № 3. ГЕНЕРИРОВАНИЕ ОТЧЕТОВ
- •ЛАБОРАТОРНАЯ РАБОТА № 4. УДАЛЕННОЕ СОЕДИНЕНИЕ С БД INTERBASE НА ОСНОВЕ BDE
- •ЛАБОРАТОРНАЯ РАБОТА № 5. РАБОТА С КОМПОНЕНТАМИ MICROSOFT SQL SERVER
- •САМОСТОЯТЕЛЬНАЯ РАБОТА:
- •ЛАБОРАТОРНАЯ РАБОТА № 6. КОМАНДЫ СОЗДАНИЯ, МОДИФИКАЦИИ И УДАЛЕНИЯ ТАБЛИЦ
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
VisualBasic:
1. Браун С. Visual Basic 6: учебный курс / С. Браун / пер. с англ. - СПб.: Питер, 2000. - 576 с.
2.Васильев A. VBAB Office2000: учебный курс/А. Васильев, А. Андреев.- СПб.: Питер, 2001. - 432 с.
3.Макашарипов С. Программирование БД на Visual Basic 5 в примерах / С. Макашарипов. - СПб.: Питер, 1997. - 253 с.
Borland Delphi:
1.Фаронов В.В. Delphi 4: учебный курс / В.В. Фаронов. - М.: Нолидж, 1998.-448 с.
2.Епанешников А.М., Delphi 4. Среда разработки: учебное пособие / А.М. Епанешников, В.А. Епанешников. - М.: Диалог-МИФИ, 1999. - 304 с.
3.Бобровский С.И. Delphi 5: начальный курс / С.И. Бобровский. - М.: Информком-Пресс, 1999.-271 с.
4.Фленов М.В.Transact-SQL:наиболееполноеруководство /М.В. Фленов.- СПб.: БХВ - Петербург, 2006. - 565 с.
Справочники
1.Карпов Б. Visual Basic 6: специальный справочник / Б. Карпов. - СПб.: Питер, 2000. - 416 с.
2.Скуснов А.Л. Справочник по компонентам Delphi 3 / А.Л. Скуснов. - М.: ПРИОР, 1998.-296 с.
3. Добейтесь того, чтобы выбор пунктов меню «Технология ADO» и «Технология DAO» вызывал отображение форм Frm_ADO и Frm_ DAO в модальном режиме (Frm_DAO.Show 1).
Для подключения к БД необходимо использовать нестандартные элемен ты объектного интерфейса. Поэтому подключите к проекту следующие библи отеки (окно Project References):
Microsoft ActiveX Data Objects 2.1 Library;
Microsoft ActiveX Data Objects Recordset 2.7 Library.
Далее отобразите на панели компонентов элементы, необходимые для ра боты с БД (окно Project Components):
Microsoft ADO Data Control 6.0 (OLEDB);
Microsoft DataGrid Control 6.0 (OLEDB);
Microsoft DataList Control 6.0 (OLEDB);
Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB).
На панели компонентов должны появиться новые ярлычки объектов. 4. Расположите элемент ADO Data Control на форме Frm ADO
и настройте подключение к БД (в контекстном меню ADODC Proper ties). Установите:
Microsoft OLE DB Provider for ODBC Drivers MS Access Database
путь к Bfl\W_History.mdb
Остальные параметры подключения изменять не следует.
5. На закладке Record Source, выберите тип команды adCmdTable, а ниже - таблицу T_zakaz. Нажмите кнопки «Применить» и «ОК». Запустите проект и убедитесь, что элемент навигации еще не работает. Расположите на этой же форме два элемента (TextBox) и установите их свойство DataSource в Adodcl. При этом первому элементу установите в свойство DataField поле ID, а второму - zakaz. Запустите проект и оцените результат работы.
6.То, что на форме отображается первичный ключ таблицы (Ю), конечно, нехорошо. Поэтому удалите этот текстовый элемент, а в обработчике события MoveComplete(ByVal adReason,.... ByVal pRecordset As
ADODB.Recordset20) объекта Adodcl Q наберите следующий код:
Adodc1.Caption= “Запись №” & _ CStr(Adodc1 .Recordset.AbsolutePosition) & _ “ из “ & CStr(Adodc1.Recordset.RecordCount)
Запустите проект и оцените результат.
Расположите на форме 5 кнопок Commandl.. .Command5, измените свойс тво Caption этих кнопок соответственно на «Начало», «Назад», «Вперед», «Ко нец», «Новая запись». Используя материал лекции 1, найдите команды для организации навигации по таблице T_zapis и добавления в нее новых записей, например Adodc 1 .Recordset.AddNew.
Задание:
С помощью Microsoft Visual Basic разработайте программу, которая позво ляет корректно работать с БД MicrosoftAccess предыдущего занятия. Програм ма должна подключаться к локальной БД и давать возможность пользователю просматривать содержимое журнала работ в зависимости от установленного диапазона дат.
Порядокработы:
1.Все, что мы делали на предыдущем занятии, не вполне профессионально, так как мы работали с БД напрямую, не используя контейнер связей проекта. Поэтому создадим окружение данных нашего проекта (Project Add Data Environment), в котором для объекта Connection 1 произведем настройку подключения к БД (пункт Properties в контекстном меню).
2.Связь с БД установлена. Сейчас в рамках этого подключения создадим команду Cm dTable, которая основана на таблице T zakaz (все параметры устанавливаются в пункте Properties контекстного меню команды). Если все сделано корректно, в древовидной структуре окружения данных появились все поля таблицы.
3.Создайте форму Frm_ODBC и обеспечьте ее вызов из главного меню программы.
4.Далее захватите мышью ярлычок команды Cmd_Table и переместите его внутрь формы Frm ODBC. Запустите проект и оцените результат. Но, оказывается, что и у этого метода есть свой недостаток: непонятно, как перемещаться по записям таблицы. Поэтому расположите на форме
кнопку, при нажатии которой должен выполняться следующий код:
DataEnvironment1.rsCmd_Table.MoveNext
Запустите проект и нажимайте эту кнопку до возникновения очевидной ошибки. Она произошла, как только курсор набора данных покинул послед нюю запись. Используя материал лекции, найдите команды для исправления данной ошибки, а также дополните форму кнопками, обеспечивающими пе ремещение вверх на одну запись, на первую и последнюю запись.
5. Расположите на форме FrmTable элемент DataGrid и подключите его к таблице. Для этого установите свойство DataSource в DataEnvironmentl, а свойство DataMember- в Cmd Table. Запустите проект и оцените результат.
Навигация стала приятней, но таблица позволяет только просматривать ранее занесенные данные. К тому же в визуальном режиме не видна структура таблицы. Поэтому выберем в контекстном меню таблицы пункт Edit и считаем
ее структуру Retrieve Fields (тоже в контекстном меню). После этого разрешим добавление и удаление новых строк в окне Properties таблицы (флажки AllowAddNew и AllowDelete закладки General).
Запустите проект и попытайтесь в таблицу добавить новую запись или изменить существующую информацию, устраните причины неудачи.
6.Внесите в таблицу пару новых строк с произвольной информацией. Обратите внимание, что синхронного заполнения первичного ключа таблицы не происходит (это поле заполнится только после повторного выполнения команды). Закройте программу и еще раз запустите проект. Поля первичного ключа в добавленных строках заполнились корректно. Поскольку пользователю не надо давать возможность видеть (а тем более изменять) первичный ключ таблицы, удалите его из таблицы отображения, выбрав пункт Delete в контекстном меню этого столбца.
7.Перейдите к окну окружения данных и в рамках подключения Con nection 1 создайте еще одну команду. Назовите команду Cmd Queiy и заполните SQL Statement приведенным ниже оператором:
SELECT t_zakaz.zakaz as Заказчик, T_adres.adres as Адрес, t_data.data_w as Дата, t_nepol.nepol as Неполадка, t_workn.n_peopl as Человек, t_workn.n_chas as Часов, t_workn.nepol_y_n as Состояние
FROM t_zakaz, T_adres, t_workn, t_disp, t_data, t_nepol WHERE t_zakaz.id = T_adres.id_t_zakaz AND T_adres.id = t_workn.id_t_adres AND t_workn.id_Ldisp = Ldisp.id AND t_workn.id_t_data = t_data.id AND t_workn.id_t_nepol = t_nepol.id AND (t_disp.disp = ?) AND (t_data.data_w >= ?) AND (t_data.data_w <= ?)
Для построения данного запроса используйте кнопку SQLBilder. На вклад ке Parameters произведите описания трех параметров запроса следующим об
разом: |
|
|
|
|
P a ra m l |
- |
D ata |
T ype(adB ST R ),S ize(8),T ype(string(V T _B S T R )), |
|
Required(True); |
|
|
||
P aram 2 |
- |
D ata |
Type(adD B D ate), |
S ize(8),T ype(D ate(V T _D ate)), |
Required(True); |
|
|
||
Р а г а т З |
- |
D ata |
Type(adD B D ate), |
S ize(8),T ype(D ate(V T _D ate)), |
Required(True); |
|
|
(В круты х скобках представлены значения входных и выходных характе ристик соответствующих параметров.)
Перейдите к форме Frm_ODBC и удалите структуру DBGrid, выбрав пункт контекстного меню Clear Fields, после чего установите свойство DataMember этого объекта в Cmd Query. Это выполнить удалось, но структура запроса в таблице еще не отразилась. С помощью пункта Retrieve Fields обновите струк туру таблицы.
8. Создайте в контейнере окружения данных DataEnvironmentl еше два сценария связи с базой данных —cmd_disp на основе таблицы T_disp и cmd_data на основе таблицы T data. Разместите на форме Frm_ODBC
три объекта базового класса DataCombo, подпишите их соответственно Диспетчер, Диапазон дат с... по... и измените у каждого свойство Name на DJDataCombo, n_Datax, kD atax. Далее для каждого объекта произведите настройку свойств DataSource, DataMember, DataField, RowSource, RowMember, ListFild, произведя выбор контейнера связи, сценария и отображаемого атрибута. Например, для объекта DJData Combo Диспетчер указанные свойства должны иметь следующие значения: DataSource(DataEnvironmentl), DataMember(cmd_disp), DataField(disp), RowSource(DataEnvironmentl), RowMember(cmddisp), ListFild(disp).
9.Добавьте на форму кнопку «Отобразить» и в обработчике событий этой кнопки напишите следующий программный код:
Dim param As String Dim datn As Date Dim datkAs Date
param = Trim(d_DataCombo.Text) datn = n_Datax.Text
datak = k_Datax.Text With DataEnvironmentl
If .rscmd_Query.State = adStateOpen Then
.rscmd_Query.Close End If
cmd_Query param, datan, datak
If .rscmd_Query.RecordCount > 0 Then ‘MsgBox “Найден “ & .rscmd_Query (“disp’’).Value, “Внимание!”
Else
MsgBox “нет записей”, , “Ошибка №1!” End If
End With w_DataGrid.DataMember = “cmd_Query”
Set w_DataGrid.DataSource = DataEnvironmentl
Запустите проект и протестируйте работу приложения.
10.Самостоятельно доработайте приложение так, чтобы из журнала работ имелась возможность для каждого заказчика просматривать за выбранный период проделанные у него работы и находить лицо, ответственное за прием заявки.
11.Протестируйте программу и защитите работу.