
- •Тема 1 Проектирование базы данных
- •Тема 2 Проектирование структуры таблиц при использовании языка Transact-sql
- •Тема 3 Проектирование структуры таблиц при использовании case-средства erwin и консоли sql Server Management Studio
- •Тема 4 sql Server Management Studio
- •Тема 5 Выборка данных из бд
- •Тема 6 Объединение таблиц
- •Тема 7 Вложенные запросы
- •Тема 8 использование оператора exists, case, any и all
- •Тема 9 Запросы на добавление, удаление и изменение записей. Работа с тригирами и транзакциями
- •Тема 10 Проектирование клиентской части приложения
- •Тема 11 Создание отчетов
- •Тема 12 Создание справки и инсталляционного пакета
Тема 10 Проектирование клиентской части приложения
Форма «Тарификация»
Рисунок 10.38 Окно «тарификация» приложения
Код:
f (Edit_fio.Text<>'') and (Edit_Familiya.Text<>'')
and (ComboBox_Pck.Text<>'') then begin
Zapros_BDE:=TQuery.Create(nil);
Zapros_BDE.DatabaseName:=DM_BDE.Database.DatabaseName;
Zapros_BDE.Active:=false;
Zapros_BDE.SQL.Clear;
Zapros_BDE.SQL.Add('select номер_пцк from ПЦК where название='+#39+ComboBox_Pck.Text+#39);
Zapros_BDE.Active:=true;
Zapros_BDE_1:=TQuery.Create(nil);
Zapros_BDE_1.DatabaseName:=DM_BDE.Database.DatabaseName;
Zapros_BDE_1.Active:=false;
Zapros_BDE_1.SQL.Clear;
Zapros_BDE_1.SQL.Add('insert into преподаватели (фио, фамилия, имя, отчество, дата_рождения, адрес, телефон, пцк) values'+
'('+chr(39)+Edit_fio.Text+chr(39)+','+chr(39)+Edit_Familiya.Text+chr(39)+
','+chr(39)+Edit_Ima.Text+chr(39)+','+chr(39)+Edit_Otchestvo.Text+chr(39)+
','+chr(39)+MaskEdit_Data_rogdeniya.Text+chr(39)+','+chr(39)+Edit_Adres.Text+chr(39)+
','+chr(39)+Edit_Telefon.Text+chr(39)+','+IntToStr(Zapros_BDE.fieldbyname('номер_пцк').Value)+')');
Zapros_BDE_1.ExecSQL;
F_Prepodavateli.Edit_PCKChange(Sender);
F_Prepodavateli.Button4Click(Sender);
F_Dobavleniya_Prepodavatela.Close;
end else Application.MessageBox('Обязательно заполняемые поля: "Фамилия И.О.", "Фамилия" и "ПЦК"','Предупреждение!',MB_OK+MB_ICONERROR);
end;
Форма «Преподаватели»
Рисунок 10.39 Окно «Преподаватели» приложения
Код:
unit U_Prepodavateli;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, DB, Grids, DBGrids, DBTables;
type
TF_Prepodavateli = class(TForm)
DBGrid_Prepodavateli: TDBGrid;
DataSource_Prepodavateli: TDataSource;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Bevel1: TBevel;
Label1: TLabel;
Edit_Poisk: TEdit;
Bevel2: TBevel;
Label2: TLabel;
BitBtn5: TBitBtn;
Label3: TLabel;
Edit_Pck: TEdit;
Bevel3: TBevel;
Label4: TLabel;
Label5: TLabel;
Bevel4: TBevel;
Label6: TLabel;
BitBtn_Dobavit: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn_DobavitClick(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure Edit_PckChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_Prepodavateli: TF_Prepodavateli;
implementation
uses U_DM_BDE, U_Dobavleniya_Prepodavatela, U_Izmenenie_Prepodavatela;
{$R *.dfm}
procedure TF_Prepodavateli.BitBtn1Click(Sender: TObject);
begin
DM_BDE.Query_Prepodavateli.First;
end;
procedure TF_Prepodavateli.BitBtn2Click(Sender: TObject);
begin
DM_BDE.Query_Prepodavateli.prior;
end;
procedure TF_Prepodavateli.BitBtn3Click(Sender: TObject);
begin
DM_BDE.Query_Prepodavateli.next;
end;
procedure TF_Prepodavateli.BitBtn4Click(Sender: TObject);
begin
DM_BDE.Query_Prepodavateli.last;
end;
procedure TF_Prepodavateli.BitBtn_DobavitClick(Sender: TObject);
begin
F_Dobavleniya_Prepodavatela.showmodal;
end;
procedure TF_Prepodavateli.BitBtn5Click(Sender: TObject);
begin
DM_BDE.Query_Prepodavateli.Locate('фамилия',Edit_Poisk.Text,[loCaseInsensitive,loPartialKey]);
end;
procedure TF_Prepodavateli.Edit_PckChange(Sender: TObject);
begin
DM_BDE.Query_Prepodavateli.Active:=false;
DM_BDE.Query_Prepodavateli.ParamByName('PCK').AsString:=Edit_PCK.Text+'%';
DM_BDE.Query_Prepodavateli.Active:=true;
end;
procedure TF_Prepodavateli.FormShow(Sender: TObject);
begin
Edit_PckChange(Sender);
end;
procedure TF_Prepodavateli.BitBtn8Click(Sender: TObject);
begin
if Application.MessageBox(pchar('Удалить преподавателя: '
+DM_BDE.Query_Prepodavateli.FieldByName('фио').AsString+
' ?'),'Предуприждение!',MB_YESNO+MB_ICONQUESTION)=6 then begin
Zapros_BDE:=TQuery.Create(nil);
Zapros_BDE.DatabaseName:=DM_BDE.Database.DatabaseName;
Zapros_BDE.Active:=false;
Zapros_BDE.SQL.Clear;
Zapros_BDE.SQL.Add('delete from преподаватели where код_преподавателя='+IntToStr(DM_BDE.Query_Prepodavateli.FieldByName('код_преподавателя').Value));
Zapros_BDE.ExecSQL;
Edit_PCKChange(Sender);
end;
end;
procedure TF_Prepodavateli.BitBtn7Click(Sender: TObject);
begin
F_Izmenenie_Prepodavatela.ShowModal;
end;
Форма «Добавление»
Рисунок 10.40 Окно «Добавление» приложения
Код:
if Application.MessageBox(pchar('Добавить преподавателя: '
+DM_BDE.Query_Prepodavateli.FieldByName('фио').AsString+ ' ?'),'Предуприждение!',MB_YESNO+MB_ICONQUESTION)=6 then begin
Zapros_BDE:=TQuery.Create(nil);
Zapros_BDE.DatabaseName:=DM_BDE.Database.DatabaseName;
Zapros_BDE.Active:=false;
Zapros_BDE.SQL.Clear;
Zapros_BDE.SQL.Add('delete from преподаватели where код_преподавателя='
+IntToStr(DM_BDE.Query_Prepodavateli.FieldByName('код_преподавателя').Value));
Zapros_BDE.ExecSQL;
Edit_PCKChange(Sender);
end;
Форма «ПЦК»
Рисунок 10.41 Окно «ПЦК» приложения
Код:
unit U_PCK;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, DB, Grids, DBGrids, DBClient,
SimpleDS;
type
TF_PCK = class(TForm)
DBGrid_PCK: TDBGrid;
DataSource_PCK: TDataSource;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Bevel1: TBevel;
Label1: TLabel;
Bevel2: TBevel;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
Label2: TLabel;
SimpleDataSet_Prepodavateli: TSimpleDataSet;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_PCK: TF_PCK;
implementation
uses U_DM_dbExpress, U_Glavnaya;
{$R *.dfm}
procedure TF_PCK.BitBtn1Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.First
end;
procedure TF_PCK.BitBtn2Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.prior
end;
procedure TF_PCK.BitBtn3Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.next
end;
procedure TF_PCK.BitBtn4Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.last
end;
procedure TF_PCK.FormShow(Sender: TObject);
begin
DBGrid_PCK.Columns.Items[1].PickList.Clear;
SimpleDataSet_Prepodavateli.Active:=false;
SimpleDataSet_Prepodavateli.Active:=true;
while not SimpleDataSet_Prepodavateli.Eof do
begin
DBGrid_PCK.Columns.Items[1].PickList.Add(SimpleDataSet_Prepodavateli.fieldbyname('фио').Value);
SimpleDataSet_Prepodavateli.Next;
end;
end;
procedure TF_PCK.BitBtn7Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.Delete;
end;
procedure TF_PCK.BitBtn5Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.Append;
end;
procedure TF_PCK.BitBtn6Click(Sender: TObject);
begin
DM_dbExpress.SimpleDataSet_PCK.Edit;
end;
end.
Форма «Статистика»
Рисунок 10.42 Окно «Статистика» приложения
Код :
unit U_Statistika;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, DBTables, DBCtrls,
DBClient, SimpleDS;
type
TF_Statistika = class(TForm)
GroupBox1: TGroupBox;
ADOStoredProc_Po_prepodavatelam: TADOStoredProc;
DataSource_Po_prepodavatelam: TDataSource;
DBGrid_Po_prepodavatelam: TDBGrid;
GroupBox2: TGroupBox;
DBGrid_Disciplini: TDBGrid;
Query_Spisok_prepidavateley: TQuery;
DataSource_Spisok_prepodavateley: TDataSource;
DBLookupComboBox_Prepodavateli: TDBLookupComboBox;
StoredProc_Prepodavatel: TStoredProc;
DataSource_Prepodavatel: TDataSource;
StoredProc_Kolichectvo_chasov: TStoredProc;
Label_Kolichestvo_chasov: TLabel;
ADOStoredProc_Kolichestvo_Prepodavateley: TADOStoredProc;
Label_Kolichestvo_prepodavateley: TLabel;
SimpleDataSet_Statistika_grupp: TSimpleDataSet;
GroupBox3: TGroupBox;
DBGrid_Gruppi: TDBGrid;
DataSource_Statistiga_gruppi: TDataSource;
SimpleDataSet_Statistika_gruppDSDesigner: TStringField;
SimpleDataSet_Statistika_grupp_: TIntegerField;
procedure DBLookupComboBox_PrepodavateliClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_Statistika: TF_Statistika;
implementation
uses U_DM_ADO, U_DM_dbExpress, U_DM_BDE;
{$R *.dfm}
procedure TF_Statistika.DBLookupComboBox_PrepodavateliClick(
Sender: TObject);
begin
StoredProc_Prepodavatel.Active:=False;
StoredProc_Prepodavatel.ParamByName('@fio').Value:=DBLookupComboBox_Prepodavateli.Text;
StoredProc_Kolichectvo_chasov.ParamByName('@fio').Value:=DBLookupComboBox_Prepodavateli.Text;
amValues['@kol'];
end;
procedure TF_Statistika.FormShow(Sender: TObject);
begin
ADOStoredProc_Kolichestvo_Prepodavateley.Active:=false;
+IntToStr(ADOStoredProc_Kolichestvo_Prepodavateley.Parameters.ParamByName('@kol').Value);
ADOStoredProc_Kolichestvo_Prepodavateley.Active:=true;
{ StoredProc_Kolichectvo_chasov.Active:=false;
StoredProc_Kolichectvo_chasov.ExecProc;
Label_Kolichestvo_chasov.Caption:='Всего: ' +IntToStr(StoredProc_Kolichectvo_chasov.Params.ParamByName('@kol').Value);
StoredProc_Kolichectvo_chasov.Active:=true; }
end;end.