Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovoy_proekt_BD.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.21 Mб
Скачать

Список использованной литературы

  1. Волкова, Т.В. Проектирование и создание БД / Т.В. Волкова. М–во образования и науки РФ, Гос. образоват. учреждение высш. проф. образования "ОГУ". – Оренбург: ГОУ ОГУ. – 2006. – 140 с.

  2. Кириллов В.В. Структурированный язык запросов (SQL). – СПб.: ИТМО, 2005. – 80 с.

  3. Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – М.: Финансы и статистика, 2000. – 351 с.

  4. А. Ковязин, С.Востриков. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil. Изд. КУДИЦ-Образ, Санкт-Питербург. 2005. – 496 с.

  5. Delphi 7. Основы программирования. Решение типовых задач. Самоучитель: Л. М. Климова — Москва, КУДИЦ-Образ, 2006 г.- 480 с.

Приложение а (обязательное) Исходные тексты программ

Файл главной формы – Меню программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, DB, IBDatabase, IBCustomDataSet, IBTable, jpeg, ExtCtrls,

StdCtrls;

type

TForm1 = class(TForm)

mm1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

ibtrnsctn1: TIBTransaction;

ibdtbs1: TIBDatabase;

DataSource1: TDataSource;

IBTable1: TIBTable;

IBTable2: TIBTable;

IBTable3: TIBTable;

IBTable4: TIBTable;

IBTable5: TIBTable;

IBTable6: TIBTable;

IBTable7: TIBTable;

DataSource2: TDataSource;

DataSource3: TDataSource;

DataSource4: TDataSource;

DataSource5: TDataSource;

DataSource6: TDataSource;

DataSource7: TDataSource;

DataSource8: TDataSource;

ibtbl1: TIBTable;

ds1: TDataSource;

Image1: TImage;

edt1: TEdit;

btn1: TButton;

lbl1: TLabel;

N9: TMenuItem;

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure Image1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}

procedure TForm1.N5Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Form3.Show;

Form3.PageControl1.ActivePageIndex:=0 ;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

Form3.Show;

Form3.PageControl1.ActivePageIndex:=1 ;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

Form3.Show;

Form3.PageControl1.ActivePageIndex:=2 ;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

form4.show;

end;

procedure TForm1.btn1Click(Sender: TObject);

begin

try

ibdtbs1.DatabaseName:=edt1.Text;

ibdtbs1.Connected:=True;

IBTable1.Active:=True;

IBTable2.Active:=True;

IBTable3.Active:=True;

IBTable4.Active:=True;

ibtbl1.Active:=True;

except

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

edt1.Text:=ibdtbs1.DatabaseName;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

form5.show;

end;

procedure TForm1.Image1Click(Sender: TObject);

begin

end;

end.

Файл демонстрации таблиц, в частности форм 1:М

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DBCtrls, DB, IBDatabase,

IBCustomDataSet, IBTable, ComCtrls, IBQuery, Mask, jpeg;

type

TForm3 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

DBNavigator1: TDBNavigator;

DBGrid1: TDBGrid;

RadioGroup1: TRadioGroup;

TabSheet2: TTabSheet;

DBGrid2: TDBGrid;

dblkcbbKOD_PP: TDBLookupComboBox;

dblkcbbKOD_KLU: TDBLookupComboBox;

dblkcbbKOD_KLU1: TDBLookupComboBox;

RadioGroup2: TRadioGroup;

TabSheet4: TTabSheet;

IBQuery1: TIBQuery;

DBGrid4: TDBGrid;

DataSource1: TDataSource;

Button1: TButton;

Button2: TButton;

dblkcbbKOD_PROV: TDBLookupComboBox;

btn1: TButton;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

edt4: TEdit;

lbl1: TLabel;

lbl2: TLabel;

lbl3: TLabel;

lbl4: TLabel;

lbl5: TLabel;

ibqry1: TIBQuery;

ds1: TDataSource;

btn2: TButton;

btn3: TButton;

btn4: TButton;

lbl6: TLabel;

lbl7: TLabel;

lbl8: TLabel;

edt5: TEdit;

lbl9: TLabel;

edt6: TEdit;

lbl10: TLabel;

edt7: TEdit;

lbl11: TLabel;

edt8: TEdit;

lbl12: TLabel;

edt9: TEdit;

lbl13: TLabel;

lbl14: TLabel;

edt10: TEdit;

edt11: TEdit;

lbl15: TLabel;

edt12: TEdit;

dbgrd1: TDBGrid;

img1: TImage;

img2: TImage;

procedure RadioGroup1Click(Sender: TObject);

procedure RadioGroup2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure pusk1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure dblkcbbKOD_PROVClick(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure DBGrid4CellClick(Column: TColumn);

procedure dblkcbbKOD_PPClick(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure btn3Click(Sender: TObject);

procedure btn4Click(Sender: TObject);

procedure DBGrid2CellClick(Column: TColumn);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses

Unit1, Unit2, Unit4, DateUtils;

{$R *.dfm}

function stoim(date:TDateTime):Real;

var st,st26,st20:Real;t,hour:Word;

begin

Form3.ibqry1.SQL.Clear;

Form3.ibqry1.SQL.add('select "STOIM","LGSTOIM_20_2","LGSTOIM_2_6" from "PRESKUR" where "DAT"=(SELECT MAX("DAT") FROM "PRESKUR" where "KOD_PROV"=:kod and "DAT"<:dat)');

Form3.ibqry1.ParamByName('kod').AsInteger:=Form3.dblkcbbKOD_PP.KeyValue;

Form3.ibqry1.ParamByName('dat').AsDate:=date;

Form3.ibqry1.Open;

st:=Form3.ibqry1.FieldByName('STOIM').AsFloat;

st26:=Form3.ibqry1.FieldByName('LGSTOIM_2_6').AsFloat;

st20:=Form3.ibqry1.FieldByName('LGSTOIM_20_2').AsFloat;

DecodeDateTime(date,t,t,t,hour,t,t,t);

case hour of

0..1:stoim:=st20;

2..5:stoim:=st26;

6..19:stoim:=st;

20..23:stoim:=st20;

end;

end;

function rasch(date1,date2:TDateTime):Real;

var date:TDateTime;st:real; y,mo,d,h,m,t:Word;

begin

st:=0;

DecodeDateTime(date2,y,mo,d,h,m,t,t);

st:=st+stoim(date2)*m;

date2:=EncodeDateTime(y,mo,d,h,0,t,t);

DecodeDateTime(date1,y,mo,d,h,m,t,t);

if m>0 then

begin

st:=st+stoim(date1)*(60-m);

date1:=EncodeDateTime(y,mo,d,h,0,t,t);

date1:= date1+ 1 / 24;

end;

date:=date1+1 / 1442;

while (date<=date2) do

begin

st:=st+stoim(date)*60;

date:= date+ 1 / 24;

end;

rasch:=st;

end;

procedure TForm3.RadioGroup1Click(Sender: TObject);

begin

case RadioGroup1.ItemIndex Of

0: begin

DBGrid1.Visible:=True;

dbgrd1.Visible:=False;

DBNavigator1.DataSource:=Form1.DataSource2;

end;

1:begin

DBGrid1.Visible:=False;

dbgrd1.Visible:=True;

DBNavigator1.DataSource:=Form1.DataSource3;

end;

end;

end;

procedure TForm3.RadioGroup2Click(Sender: TObject);

begin

case RadioGroup2.ItemIndex of

0: begin

dblkcbbKOD_KLU.Enabled:=True;

lbl7.Enabled:=True;

dblkcbbKOD_KLU1.Enabled:=False;

lbl8.Enabled:=False;

dblkcbbKOD_KLU.KeyValue:=1;

end;

1:begin

dblkcbbKOD_KLU.Enabled:=False;

lbl7.Enabled:=False;

dblkcbbKOD_KLU1.Enabled:=True;

lbl8.Enabled:=True;

dblkcbbKOD_KLU1.KeyValue:=1;

end;

end;

ibqry1.sql.Clear;

if RadioGroup2.ItemIndex=0 then

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",');

ibqry1.SQL.Add('SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",');

ibqry1.SQL.Add('SEANC.STOIM AS "Стоимость",SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLF"=:fiz');

end

else

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",');

ibqry1.SQL.Add('SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",');

ibqry1.SQL.Add('SEANC.STOIM AS "Стоимость",SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLU"=:ur');

end;

ibqry1.ParamByName('prov').Value:=dblkcbbKOD_PP.KeyValue;

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('fiz').Value:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('ur').Value:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.Open;

edt5.Text:='';

edt6.Text:='';

edt7.Text:='';

edt10.Text:='';

edt8.Text:='';

edt9.Text:='';

edt11.Text:='';

edt12.Text:='';

end;

procedure TForm3.Button1Click(Sender: TObject);

begin

try

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('insert into "PRESKUR"("DAT","KOD_PROV","LGSTOIM_2_6","LGSTOIM_20_2","STOIM") values(:dat,:prov,:l26,:l20,:st)');

IBQuery1.ParamByName('dat').AsDate:=StrToDate(edt1.Text);

IBQuery1.ParamByName('prov').AsInteger:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.ParamByName('l26').AsFloat:=StrToFloat(edt2.Text);

IBQuery1.ParamByName('l20').AsFloat:=StrToFloat(edt3.Text);

IBQuery1.ParamByName('st').AsFloat:=StrToFloat(edt4.Text);

IBQuery1.ExecSQL;

Finally

End;

IBQuery1.sql.Clear;

IBQuery1.SQL.Add('select PRESKUR.DAT AS "Дата",LGSTOIM_2_6 AS "Цена с 2 до 6",LGSTOIM_20_2 AS "Цена с 20 до 2",STOIM AS "Цена с 6 до 20" from PRESKUR where "KOD_PROV"=:h');

IBQuery1.ParamByName('h').Value:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.Open;

edt1.Text:='';

edt2.Text:='';

edt3.Text:='';

edt4.Text:='';

end;

procedure TForm3.pusk1Click(Sender: TObject);

begin

IBQuery1.sql.Clear;

IBQuery1.SQL.Add('commit');

IBQuery1.Open;

end;

procedure TForm3.Button3Click(Sender: TObject);

begin

Form1.IBTable3.Cancel;

IBQuery1.Close;

IBQuery1.Open;

end;

procedure TForm3.dblkcbbKOD_PROVClick(Sender: TObject);

begin

IBQuery1.sql.Clear;

IBQuery1.SQL.Add('select PRESKUR.DAT AS "Дата",LGSTOIM_2_6 AS "Цена с 2 до 6",LGSTOIM_20_2 AS "Цена с 20 до 2",STOIM AS "Цена с 6 до 20" from PRESKUR where "KOD_PROV"=:h');

IBQuery1.ParamByName('h').Value:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.Open;

edt1.Text:=IBQuery1.Fieldbyname('Дата').Asstring;

edt2.Text:=IBQuery1.Fieldbyname('Цена с 2 до 6').Asstring;

edt3.Text:=IBQuery1.Fieldbyname('Цена с 20 до 2').Asstring;

edt4.Text:=IBQuery1.Fieldbyname('Цена с 6 до 20').Asstring;

end;

procedure TForm3.btn1Click(Sender: TObject);

begin

try

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('update PRESKUR set LGSTOIM_2_6=:l26,LGSTOIM_20_2=:l20,STOIM=:st where KOD_PROV=:kod and DAT=:dat');

IBQuery1.ParamByName('dat').AsDate:=StrToDate(edt1.Text);

IBQuery1.ParamByName('kod').AsInteger:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.ParamByName('l26').AsFloat:=StrToFloat(edt2.Text);

IBQuery1.ParamByName('l20').AsFloat:=StrToFloat(edt3.Text);

IBQuery1.ParamByName('st').AsFloat:=StrToFloat(edt4.Text);

IBQuery1.ExecSQL;

Finally

End;

IBQuery1.sql.Clear;

IBQuery1.SQL.Add('select PRESKUR.DAT AS "Дата",LGSTOIM_2_6 AS "Цена с 2 до 6",LGSTOIM_20_2 AS "Цена с 20 до 2",STOIM AS "Цена с 6 до 20" from PRESKUR where "KOD_PROV"=:h');

IBQuery1.ParamByName('h').Value:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.Open;

edt1.Text:='';

edt2.Text:='';

edt3.Text:='';

edt4.Text:='';

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

try

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('delete from PRESKUR where KOD_PROV=:kod and DAT=:dat;');

IBQuery1.ParamByName('kod').AsInteger:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.ParamByName('dat').AsDate:=StrToDate(edt1.Text);

IBQuery1.ExecSQL;

Finally

End;

IBQuery1.sql.Clear;

IBQuery1.SQL.Add('select PRESKUR.DAT AS "Дата",LGSTOIM_2_6 AS "Цена с 2 до 6",LGSTOIM_20_2 AS "Цена с 20 до 2",STOIM AS "Цена с 6 до 20" from PRESKUR where "KOD_PROV"=:h');

IBQuery1.ParamByName('h').Value:=dblkcbbKOD_PROV.KeyValue;

IBQuery1.Open;

edt1.Text:='';

edt2.Text:='';

edt3.Text:='';

edt4.Text:='';

end;

procedure TForm3.DBGrid4CellClick(Column: TColumn);

begin

edt1.Text:=IBQuery1.Fieldbyname('Дата').Asstring;

edt2.Text:=IBQuery1.Fieldbyname('Цена с 2 до 6').Asstring;

edt3.Text:=IBQuery1.Fieldbyname('Цена с 20 до 2').Asstring;

edt4.Text:=IBQuery1.Fieldbyname('Цена с 6 до 20').Asstring;

end;

procedure TForm3.dblkcbbKOD_PPClick(Sender: TObject);

begin

ibqry1.sql.Clear;

if RadioGroup2.ItemIndex=0 then

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",');

ibqry1.SQL.Add('SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",');

ibqry1.SQL.Add('SEANC.STOIM AS "Стоимость",SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLF"=:fiz');

end

else

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",');

ibqry1.SQL.Add('SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",');

ibqry1.SQL.Add('SEANC.STOIM AS "Стоимость",SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLU"=:ur');

end;

ibqry1.ParamByName('prov').Value:=dblkcbbKOD_PP.KeyValue;

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('fiz').Value:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('ur').Value:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.Open;

edt5.Text:='';

edt6.Text:='';

edt7.Text:='';

edt10.Text:='';

edt8.Text:='';

edt9.Text:='';

edt11.Text:='';

edt12.Text:='';

end;

procedure TForm3.btn2Click(Sender: TObject);

var s:string;j:Double;

begin

Try

j:=rasch(StrToDateTime(edt7.Text+edt8.Text),StrToDateTime(edt10.Text+edt9.Text));

edt12.Text:=FloatToStr(j);

ibqry1.SQL.Clear;

ibqry1.SQL.Add('insert into "SEANC"("KOD","MAC_ADR","IP_ADR","DATA","DATA_KON","VR_NACH","VR_KON","STOIM","KOD_KLF","KOD_KLU","KOD_PP") values(GEN_ID(SEANCE,1),:mac,:ip,:dat,:datkon,:nach,:con,:st,:kodf,:kodu,:kpp)');

ibqry1.ParamByName('mac').AsString:=edt5.Text;

ibqry1.ParamByName('dat').AsDate:=StrToDate(edt7.Text);

ibqry1.ParamByName('ip').AsString:=edt6.Text;

ibqry1.ParamByName('datkon').AsString:=edt10.Text;

ibqry1.ParamByName('nach').AsString:=edt8.Text;

ibqry1.ParamByName('con').AsString:=edt9.Text;

ibqry1.ParamByName('st').AsFloat:=StrToFloat(edt12.Text);

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('kodf').AsInteger:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('kodu').AsInteger:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.ParamByName('kpp').AsInteger:=dblkcbbKOD_PP.KeyValue;

ibqry1.ExecSQL;

Finally

End;

ibqry1.sql.Clear;

if RadioGroup2.ItemIndex=0 then

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",SEANC.STOIM AS "Стоимость",');

ibqry1.SQL.Add('SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLF"=:fiz');

end

else

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",SEANC.STOIM AS "Стоимость",');

ibqry1.SQL.Add('SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLU"=:ur');

end;

ibqry1.ParamByName('prov').Value:=dblkcbbKOD_PP.KeyValue;

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('fiz').Value:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('ur').Value:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.Open;

edt5.Text:='';

edt6.Text:='';

edt7.Text:='';

edt10.Text:='';

edt8.Text:='';

edt9.Text:='';

edt11.Text:='';

edt12.Text:='';

end;

procedure TForm3.btn3Click(Sender: TObject);

begin

try

ibqry1.Close;

ibqry1.SQL.Clear;

ibqry1.SQL.Add('delete from "SEANC" where "KOD"=:kod');

ibqry1.ParamByName('kod').AsInteger:=StrToInt(edt11.Text);

ibqry1.ExecSQL;

Finally

End;

ibqry1.sql.Clear;

if RadioGroup2.ItemIndex=0 then

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",SEANC.STOIM AS "Стоимость",');

ibqry1.SQL.Add('SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLF"=:fiz');

end

else

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",SEANC.VR_NACH AS "Время начала",SEANC.VR_KON AS "Время конца",SEANC.STOIM AS "Стоимость",');

ibqry1.SQL.Add('SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLU"=:ur');

end;

ibqry1.ParamByName('prov').Value:=dblkcbbKOD_PP.KeyValue;

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('fiz').Value:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('ur').Value:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.Open;

edt5.Text:='';

edt6.Text:='';

edt7.Text:='';

edt10.Text:='';

edt8.Text:='';

edt9.Text:='';

edt11.Text:='';

edt12.Text:='';

end;

procedure TForm3.btn4Click(Sender: TObject);

var j:Double;

begin

try

j:=rasch(StrToDateTime(edt7.Text+edt8.Text),StrToDateTime(edt10.Text+edt9.Text));

edt12.Text:=FloatToStr(j);

ibqry1.Close;

ibqry1.SQL.Clear;

ibqry1.SQL.Add('update "SEANC" set "MAC_ADR"=:mac,"IP_ADR"=:ip,"DATA"=:dat,"DATA_KON"=:datkon,"VR_NACH"=:nach,"VR_KON"=:con,"STOIM"=:stoi,"KOD_KLF"=:kodf,"KOD_KLU"=:kodu,"KOD_PP"=:kpp where "KOD"=:kod');

ibqry1.ParamByName('mac').AsString:=edt5.Text;

ibqry1.ParamByName('dat').AsDate:=StrToDate(edt7.Text);

ibqry1.ParamByName('ip').AsString:=edt6.Text;

ibqry1.ParamByName('datkon').AsString:=edt10.Text;

ibqry1.ParamByName('nach').AsString:=edt8.Text;

ibqry1.ParamByName('con').AsString:=edt9.Text;

ibqry1.ParamByName('stoi').AsFloat:=StrToFloat(edt12.Text);

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('kodf').AsInteger:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('kodu').AsInteger:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.ParamByName('kpp').AsInteger:=dblkcbbKOD_PP.KeyValue;

ibqry1.ParamByName('kod').AsInteger:=StrToInt(edt11.Text);

ibqry1.ExecSQL;

Finally

End;

ibqry1.sql.Clear;

if RadioGroup2.ItemIndex=0 then

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",SEANC.VR_NACH AS "Время начала",');

ibqry1.SQL.Add('SEANC.VR_KON AS "Время конца",SEANC.STOIM AS "Стоимость",SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLF"=:fiz');

end

else

begin

ibqry1.SQL.Add('select SEANC.MAC_ADR AS "MAC-адрес",SEANC.IP_ADR AS "IP-адрес",SEANC.DATA AS "Дата начала",SEANC.DATA_KON AS "Дата конца",SEANC.VR_NACH AS "Время начала",');

ibqry1.SQL.Add('SEANC.VR_KON AS "Время конца",SEANC.STOIM AS "Стоимость",SEANC.KOD AS "Код записи" from SEANC where "KOD_PP"=:prov and "KOD_KLU"=:ur');

end;

ibqry1.ParamByName('prov').Value:=dblkcbbKOD_PP.KeyValue;

if RadioGroup2.ItemIndex=0 then

ibqry1.ParamByName('fiz').Value:=dblkcbbKOD_KLU.KeyValue

else

ibqry1.ParamByName('ur').Value:=dblkcbbKOD_KLU1.KeyValue;

ibqry1.Open;

edt5.Text:='';

edt6.Text:='';

edt7.Text:='';

edt10.Text:='';

edt8.Text:='';

edt9.Text:='';

edt11.Text:='';

edt12.Text:='';

end;

procedure TForm3.DBGrid2CellClick(Column: TColumn);

begin

edt5.Text:=ibqry1.Fieldbyname('MAC-адрес').Asstring;

edt6.Text:=ibqry1.Fieldbyname('IP-адрес').Asstring;

edt7.Text:=ibqry1.Fieldbyname('Дата начала').Asstring;

edt10.Text:=ibqry1.Fieldbyname('Дата конца').Asstring;

edt8.Text:=ibqry1.Fieldbyname('Время начала').Asstring;

edt9.Text:=ibqry1.Fieldbyname('Время конца').Asstring;

edt11.Text:=ibqry1.Fieldbyname('Код записи').Asstring;

edt12.Text:=ibqry1.Fieldbyname('Стоимость').Asstring;

end;

procedure TForm3.FormCreate(Sender: TObject);

begin

end;

end.

Файл формы запросов

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBCustomDataSet, IBQuery, StdCtrls, ExtCtrls, DBCtrls,

Grids, DBGrids;

type

TForm4 = class(TForm)

btn1: TButton;

lbl1: TLabel;

ibqry1: TIBQuery;

ds1: TDataSource;

lbl2: TLabel;

lbl3: TLabel;

lbl4: TLabel;

lbl5: TLabel;

lbl6: TLabel;

btn2: TButton;

btn3: TButton;

cbb1: TComboBox;

dblkcbbKOD_PP1: TDBLookupComboBox;

dblkcbbKOD_KLF: TDBLookupComboBox;

rg1: TRadioGroup;

dblkcbbKOD_KLU: TDBLookupComboBox;

dbgrd3: TDBGrid;

lbl7: TLabel;

lbl8: TLabel;

procedure btn1Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure btn3Click(Sender: TObject);

procedure rg1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses

Unit1, DateUtils;

{$R *.dfm}

procedure TForm4.btn1Click(Sender: TObject);

begin

ibqry1.SQL.Clear;

ibqry1.SQL.Add('select count(*) as "kolvo" from "SEANC" where "DATA" between :dat1 and :dat2 and "KOD_PP"=:kpp');

ibqry1.ParamByName('kpp').Value:=dblkcbbKOD_PP1.KeyValue;

case cbb1.ItemIndex of

0:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.1.2013');

1:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.2.2013');

2:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.3.2013');

3:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.4.2013');

4:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.5.2013');

5:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.6.2013');

6:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.7.2013');

7:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.8.2013');

8:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.9.2013');

9:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.10.2013');

10:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.11.2013');

11:ibqry1.ParamByName('dat1').AsDate:=StrToDate('1.12.2013');

end;

ibqry1.ParamByName('dat2').AsDate:=StrToDate(IntToStr(DaysInMonth(ibqry1.ParamByName('dat1').AsDate))+'.'+IntToStr(MonthOf(ibqry1.ParamByName('dat1').AsDate))+'.2013');

ibqry1.Open;

end;

procedure TForm4.btn2Click(Sender: TObject);

begin

ibqry1.SQL.Clear;

ibqry1.SQL.Add('select "DATA" from "SEANC" where "KOD_PP"=:kpp GROUP BY "DATA" having count(*)>=all(select count(*) from "SEANC" where "KOD_PP"=:kpp group by "DATA")');

ibqry1.ParamByName('kpp').AsInteger:=dblkcbbKOD_PP1.KeyValue; //where "KOD_PP"=:kpp

ibqry1.Open;

end;

procedure TForm4.btn3Click(Sender: TObject);

begin

ibqry1.SQL.Clear;

if rg1.ItemIndex=0 then

begin

ibqry1.SQL.Add('select KF."FAM" AS "Фамилия", KF."NAME" AS "Имя",KF."OTCH" AS "Отчество",S."STOIM" AS "Стоимость",S."DATA" AS "Дата начала",S."DATA_KON" AS "Дата конца",S."VR_NACH" AS "Время начала",S."VR_KON" AS "Время конца"');

ibqry1.SQL.Add('FROM "SEANC" S,"KLFIZ" KF WHERE S."KOD_KLF"=KF."KOD" AND KF."KOD"=:fiz AND S."KOD_PP"=:kpp');

ibqry1.ParamByName('fiz').AsInteger:=dblkcbbKOD_KLF.KeyValue;

end

else

begin

ibqry1.SQL.Add('SELECT KU."NAZVANIYE" AS "Название",S."STOIM" AS "Стоимость",S."DATA" AS "Дата начала",S."DATA_KON" AS "Дата конца",S."VR_NACH" AS "Время начала",S."VR_KON" AS "Время конца"');

ibqry1.SQL.Add('FROM "SEANC" S,"KLUR" KU WHERE S."KOD_KLU"=KU."KOD" AND KU."KOD"=:ur AND S."KOD_PP"=:kpp');

ibqry1.ParamByName('ur').AsInteger:=dblkcbbKOD_KLU.KeyValue;

end;

ibqry1.ParamByName('kpp').AsInteger:=dblkcbbKOD_PP1.KeyValue;

ibqry1.Open;

end;

procedure TForm4.rg1Click(Sender: TObject);

begin

if rg1.ItemIndex=0 then

begin

dblkcbbKOD_KLF.Enabled:=True;

dblkcbbKOD_KLU.Enabled:=False;

end

else

begin

dblkcbbKOD_KLF.Enabled:=False;

dblkcbbKOD_KLU.Enabled:=True;

end;

end;

procedure TForm4.FormCreate(Sender: TObject);

begin

end;

end.

Файл формы формирования квитанции

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, DBCtrls, DB, IBCustomDataSet, IBQuery,

Grids, DBGrids;

type

TForm5 = class(TForm)

dbgrd1: TDBGrid;

ds1: TDataSource;

ibqry1: TIBQuery;

dblkcbbKOD_KLF: TDBLookupComboBox;

rg1: TRadioGroup;

dblkcbbKOD_KLU: TDBLookupComboBox;

cbb1: TComboBox;

btn1: TButton;

lbl8: TLabel;

dblkcbbKOD_PP1: TDBLookupComboBox;

lbl1: TLabel;

lbl2: TLabel;

ibqry2: TIBQuery;

lbl3: TLabel;

lbl4: TLabel;

procedure rg1Click(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses

Unit1, DateUtils;

{$R *.dfm}

procedure TForm5.rg1Click(Sender: TObject);

begin

if rg1.ItemIndex=0 then

begin

dblkcbbKOD_KLF.Enabled:=True;

dblkcbbKOD_KLU.Enabled:=False;

end

else

begin

dblkcbbKOD_KLF.Enabled:=False;

dblkcbbKOD_KLU.Enabled:=True;

end;

end;

procedure TForm5.btn1Click(Sender: TObject);

var date1,date2:TDate;q:Double;

begin

ibqry1.SQL.Clear;

ibqry2.SQL.Clear;

if cbb1.ItemIndex<>-1 then

begin

case cbb1.ItemIndex of

0:date1:=StrToDate('1.1.2013');

1:date1:=StrToDate('1.2.2013');

2:date1:=StrToDate('1.3.2013');

3:date1:=StrToDate('1.4.2013');

4:date1:=StrToDate('1.5.2013');

5:date1:=StrToDate('1.6.2013');

6:date1:=StrToDate('1.7.2013');

7:date1:=StrToDate('1.8.2013');

8:date1:=StrToDate('1.9.2013');

9:date1:=StrToDate('1.10.2013');

10:date1:=StrToDate('1.11.2013');

11:date1:=StrToDate('1.12.2013');

end;

date2:=StrToDate(IntToStr(DaysInMonth(date1))+'.'+IntToStr(MonthOf(date1))+'.2013');

if rg1.ItemIndex=0 then

begin

ibqry1.SQL.Add('select KF."FAM" AS "Фамилия", KF."NAME" AS "Имя",KF."OTCH" AS "Отчество",S."STOIM" AS "Стоимость",S."DATA" AS "Дата начала",S."DATA_KON" AS "Дата конца",S."VR_NACH" AS "Время начала",S."VR_KON" AS "Время конца"');

ibqry1.SQL.Add('FROM "SEANC" S,"KLFIZ" KF WHERE S."KOD_KLF"=KF."KOD" AND KF."KOD"=:fiz AND S."KOD_PP"=:kpp and S."DATA">=:dat1 and S."DATA_KON"<=:dat2');

ibqry2.SQL.Add('select sum ("STOIM") from "SEANC" where "KOD_KLF"=:fiz and "DATA">=:dat1 and "DATA_KON"<=:dat2');

ibqry1.ParamByName('fiz').AsInteger:=dblkcbbKOD_KLF.KeyValue;

ibqry2.ParamByName('fiz').AsInteger:=dblkcbbKOD_KLF.KeyValue;

end

else

begin

ibqry1.SQL.Add('SELECT KU."NAZVANIYE" AS "Название",S."STOIM" AS "Стоимость",S."DATA" AS "Дата начала",S."DATA_KON" AS "Дата конца",S."VR_NACH" AS "Время начала",S."VR_KON" AS "Время конца"');

ibqry1.SQL.Add('FROM "SEANC" S,"KLUR" KU WHERE S."KOD_KLU"=KU."KOD" AND KU."KOD"=:ur AND S."KOD_PP"=:kpp and S."DATA">=:dat1 and S."DATA_KON"<=:dat2');

ibqry1.ParamByName('ur').AsInteger:=dblkcbbKOD_KLU.KeyValue;

ibqry2.SQL.add('select sum ("STOIM") from "SEANC" where "KOD_KLU"=:ur and "DATA">=:dat1 and "DATA_KON"<=:dat2');

ibqry2.ParamByName('ur').AsInteger:=dblkcbbKOD_KLU.KeyValue;

end;

ibqry1.ParamByName('kpp').AsInteger:=dblkcbbKOD_PP1.KeyValue;

ibqry1.ParamByName('dat1').AsDate:=date1;

ibqry1.ParamByName('dat2').AsDate:=date2;

ibqry2.ParamByName('dat1').AsDate:=date1;

ibqry2.ParamByName('dat2').AsDate:=date2;

ibqry1.Open;

ibqry2.Open;

lbl3.Caption:='Итого: '+ibqry2.fieldByName('SUM').AsString;

end

else

ShowMessage('Выберите месяц');

end;

procedure TForm5.FormCreate(Sender: TObject);

begin

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]