- •Федеральное агенство по образованию
- •Оглавление
- •Часть I
- •Часть II
- •Часть I
- •Лабораторная работа 1(2). Применение форм.
- •DoCmd.OpenForm "Номера групп"
- •Лабораторная работа 2(1) Создание и использование запросов с использованием vba.
- •Лабораторная работа 2(2). Создание и использование запросов.
- •Лабораторная работа №3. Создание отчетов.
- •Ход работы
- •Лабораторная работа №4. Разработка приложения на Visual Basic для ведения однотабличной бд.
- •Лабораторная работа №5 обработка нормализованной многотабличной структуры бд.
- •Лабораторная работа №6. Создание многостраничного web-приложения
- •Задание 1. Создайте новую базу данных.
- •Задание 2. Создание проекта и формы SwitchBoard
- •Создание нового приложения и Web-формы SwitchBoard
- •Задание 3. Добавление компонентов, необходимых для работы с бд.
- •Добавление к приложению компонентов для работы с бд
- •Создание Web-формы для ввода данных AddContact
- •Создание Web-формы Calls
- •Часть II
- •3. Создание файла таблицы данных
- •4. Разработка приложения для работы с таблицей данных
- •5. Структура проекта приложения
- •6. Пример реализации бд о студентах
- •7. Контрольные вопросы
- •8. Требования к отчёту
- •9. Перечень заданий
- •Лабораторная работа №2 создание windows-приложения для работы с базой данных. Генерация отчетов.
- •1. Порядок выполнения работы
- •2. Обработка информации однотабличной базы данных
- •3. Печать данных
- •4. Пример реализации программы расчёта средней оценки
- •4. Контрольные вопросы
- •5. Требования к отчёту
- •Лабораторная работа №3 обработка информации базы данных, имеющей структуру «master-detail». Изучение основ sql.
- •1. Порядок выполнения работы
- •2. Основные сведения о ссылочной целостности. Задание индексов.
- •3. Задание псевдонимов в bde Administrator.
- •4. Установка связей между компонентами и бд. Создание меню.
- •5. Поиск данных.
- •6. Контрольные вопросы
- •7. Требования к отчёту
- •Лабораторная работа №4
- •3. Управление базами данных
- •4. Язык баз данных sql
- •5. Хранимые процедуры
- •6. Связь бд с приложением
- •7.1 Создание mdi интерфейса
- •7.2 Создание модуля данных
- •7.3 Вызов дочерней формы
- •7.4 Форма «Студенты»
- •If q_Spr.State in[dsedit,dsinsert] then q_Spr.Post ; // выход из режима редактирования
- •If q_Spr.UpdatesPending then // если были изменния
- •If MessageDlg('Несохраненные данные будут потеряны. Закрыть? ',
- •7.5 Форма Журнал (j_Ved)
- •7.6 Форма Ведомость (Ved)
- •7.7 Отчет об успеваемости (Rep)
- •8. Контрольные вопросы
- •9. Требования к отчёту
- •Рекомендации к выполнению курсовоГо проекта по дисциплине «Базы данных»
- •Варианты заданий:
- •Рекомендуемая литература по дисциплине «Базы данных»
If MessageDlg('Несохраненные данные будут потеряны. Закрыть? ',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Q_Spr.CancelUpdates ;
Close ;
Скомпилируйте проект, откройте справочник Студенты и попробуйте ввести, отредактировать, удалить информацию из справочника.
Аналогично сделайте самостоятельно справочник Предметы.
7.5 Форма Журнал (j_Ved)
События OnActivate
Q_J_Ved.Close ;
Q_J_Ved.Open ;
Query
Свойства SQL:
select distinct N_G , Date_g,
Predmet = isnull((select Predmet from Predmet as v2 where v2.Num_pred = v1.Num_Pred),'') ,
Gr = (select v2.Gr from Kadr as v2 where v1.PN= v2.PN)
from ved as v1
Добавить
Событие OnClick: TVed.Create(Application);
Удалить
Событие OnClick
with DataModule3.Q_for_Work do
Begin
sql.Clear;
sql.add('set dateformat dmy Delete from Ved where N_G = '
+ Q_J_Ved.FieldbyName('N_G').AsString+' and Date_G = '
+ QuotedStr(Q_J_Ved.FieldbyName('Date_g').AsString)) ;
ExecSQL ;
Q_J_Ved.Close ;
Q_J_Ved.Open ;
end ;
7.6 Форма Ведомость (Ved)
Событие OnActivate: DT_Date_G.date := Now ;
Компоненты
ComboBox (Cb_Predmet ) , ComboBox (CB_GR)
Событие OnDropDown (ссылка обоих объектов на одно событие)
var Str : string ;
begin
if (Sender as TComboBox).Name = 'CB_Predmet' then
Str := 'select distinct Predmet from Predmet';
if (Sender as TComboBox).Name = 'CB_Gr' then
Str := 'select distinct Gr from Kadr';
(Sender as TComboBox).Items.Clear;
with DataModule3.Q_for_Work do
Begin
sql.Clear;
sql.add(Str);
Open ;
If not IsEmpty then
Begin
First;
while not eof do
begin
(Sender as TComboBox).Items.add(fields[0].AsString) ;
Next ;
end;
end
end;
end;
UpdateSql
Свойство ModifySql
update ved
set
Mark = :Mark
where
NzapVed = :OLD_NzapVed
Query (Q_Ved)
Свойство SQL:
Select v1.NzapVed, v1.pn, v2.FIO , v1.Mark
from ved as v1 join Kadr as v2
on v1.PN = v2.PN
where v2.Gr = :Gr and v1.Num_Pred = :Num_Pred
and v1.n_g = :n_g and v1.Date_g = :Date_g
order by v1.pn
Button (Добавить список Студентов)
Событие OnClick
var Num_Pred: integer ;
N_G : integer;
Date_G :string ;
begin
N_G := strtoint(ME_NG.text) ;
Date_G := datetostr(DT_Date_G.Date) ;
with DataModule3.Q_for_Work do
Begin
// получение номера предмета по его названию
sql.Clear;
sql.add('select Num_Pred from predmet where Predmet='
+ QuotedStr(CB_Predmet.text)) ;
Open ;
if IsEmpty then
ShowMessage('Введен несуществующий предмет')
else
Begin
// Добавление в ведомость списка студентов выбранной группы
Num_Pred := fields[0].asinteger;
sql.Clear;
sql.add( ' set dateformat dmy '+
' Insert into ved (N_G, Date_G, PN, Num_Pred)'+
' select N_G ='+ME_NG.Text+' , Date_G = '
+ QuotedStr(datetostr(DT_Date_G.date))+', PN,'+
' Num_Pred = '+inttostr(Num_Pred)+
' from Kadr where Gr = '+QuotedStr(CB_Gr.text)) ;
ExecSQL ;
Q_Ved.Close ;
Q_Ved.ParamByName('Gr').AsString := CB_Gr.Text;
Q_Ved.ParamByName('Num_Pred').AsInteger := Num_Pred;
Q_Ved.ParamByName('N_G').AsInteger := N_G;
Q_Ved.ParamByName('Date_G').Asstring := Date_G;
Q_Ved.Open ;
end ;
end;
end;
Button (Ок)
Событие OnClick
IF Q_Ved.State in[dsedit,dsinsert] then
Q_Ved.Post ;
if Q_Ved.UpdatesPending then
Begin
try
Q_Ved.ApplyUpdates ;
except
Showmessage('Нарушена ссылочная целостность!');
Q_Ved.CancelUpdates ;
Abort ;
end ;
end ;
Close ;