Курсовые работы / ПРИС П _3
.pdfbegin
if tm=1 then begin
dm.com.CommandText:='Update proiz set log_p=FALSE WHERE (id_p='+tmp+')'; dm.com.Execute;
end;
e1.clear;
close;
end;
procedure TFaProiz.BitBtn2Click(Sender: TObject); begin
closequery;
end;
procedure TFaProiz.BitBtn1Click(Sender: TObject); begin
if (e1.Text='')then showmessage('Вы заполнили не все данные') else
begin
if tm=0 then begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_p from proiz where (nazv_p="'+e1.text+'")'; dm.temp.Active:=true;
if dm.temp.RecordCount>0 then showmessage('Подобная запись уже существует') else
begin
dm.com.CommandText:='Insert into proiz (nazv_p) values ("'+e1.Text+'")'; dm.com.Execute;
showmessage('Запись успешно добавлена'); dm.p.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_p from proiz where (nazv_p="'+e1.text+'")'; dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (tmp<>dm.temp.Fields[0].asstring) then showmessage('Подобная запись уже существует') else
begin
dm.com.CommandText:='Update proiz SET nazv_p="'+e1.Text+'" WHERE (id_p='+tmp+')'; dm.com.Execute;
showmessage('Запись успешно изменена'); dm.p.Requery();
closequery;
end;
end;
end;
end;
end.
unit aRasxod;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Spin, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids,math;
type
TFaRasxod = class(TForm) Panel1: TPanel;
Label1: TLabel;
Label6: TLabel;
Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; cb2: TComboBox;
32!
dtp1: TDateTimePicker; GroupBox1: TGroupBox; Label2: TLabel;
Label5: TLabel; e1: TEdit;
se1: TSpinEdit; Label3: TLabel; Label4: TLabel; e2: TEdit;
cb1: TComboBox; DBGrid1: TDBGrid; BitBtn3: TBitBtn; BitBtn4: TBitBtn;
procedure cb2Change(Sender: TObject); procedure cb1Change(Sender: TObject); procedure e2Change(Sender: TObject); procedure se1Change(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
FaRasxod: TFaRasxod;
implementation
uses datm, main;
{$R *.dfm}
procedure TFaRasxod.cb2Change(Sender: TObject); begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_pok from pokup where (nazv_pok="'+cb2.text+'")'; dm.temp.Active:=true;
id_pok:=dm.temp.fields[0].asstring; end;
procedure TFaRasxod.cb1Change(Sender: TObject); var kol:integer;
begin dm.temp.Active:=false;
dm.temp.CommandText:='select id_tov,st_tov,kol_tov from tovar,proiz,tip where (id_t=id_t_tov) and (id_p_tov=id_p)and (([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс."&[rasf_tov])="'+cb1.text+'")'; dm.temp.Active:=true;
id_tov:=dm.temp.fields[0].asstring;
e1.Text:=floattostr ( roundto(dm.temp.fields[1].asfloat*(100+pr)/100,-2) ); se1Change(Sender);
kol:=dm.temp.Fields[2].AsInteger;
dm.temp.Active:=false;
dm.temp.CommandText:='select sum(kol_poz) from pozicii where (id_tov_poz='+id_tov+') and (id_ras_poz=0)'; dm.temp.Active:=true;
if (kol-dm.temp.Fields[0].AsInteger)=0 then begin
showmessage('Данного товара на складе больше нет'); e1.Clear;e2.Clear;se1.Value:=0;
exit;
end; se1.MaxValue:=kol-dm.temp.Fields[0].AsInteger;
end;
procedure TFaRasxod.e2Change(Sender: TObject); begin
33!
if e1.Text<>'' then begin
e2.Text:=floattostr(strtofloat(e1.Text)*se1.Value);
end;
end;
procedure TFaRasxod.se1Change(Sender: TObject); begin
if e1.Text<>'' then begin
e2.Text:=floattostr( strtofloat(e1.Text)*se1.Value ); end;
end;
procedure TFaRasxod.BitBtn3Click(Sender: TObject); begin
if (cb1.Text='') or (se1.Value=0) then showmessage('Вы заполнили не все данные') else
begin
dm.com.CommandText:='Insert into pozicii (id_tov_poz,cena_poz,kol_poz,st_poz) values ('+id_tov+',"'+e1.text+'",'+se1.Text +',"'+e2.Text+'")';
dm.com.Execute;
showmessage('Запись успешно добавлена'); dm.poz.Requery();
cb1.ItemIndex:=-1; e1.Clear;e2.Clear;se1.Value:=0; end;
end;
procedure TFaRasxod.BitBtn4Click(Sender: TObject); begin
if dm.poz.Fields[0].AsString='' then begin
showmessage('Запись для редактирования отсутствует'); exit;
end;
tmp:=dm.poz.Fields[0].AsString;tm:=1;
if fmain.Delete('poz','pozicii',tmp)=false then begin
showmessage('Данная запись используется другим пользователем'); exit;
end
else dm.poz.Requery();
end;
procedure TFaRasxod.BitBtn2Click(Sender: TObject); begin
closequery;
end;
procedure TFaRasxod.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
dm.com.CommandText:='Delete * from pozicii where (id_ras_poz=0)'; dm.com.Execute;
e1.clear;e2.clear;
cb1.Clear;cb2.Clear;se1.Value:=0;
close;
end;
procedure TFaRasxod.FormShow(Sender: TObject); begin
dtp1.Date:=date;
end;
procedure TFaRasxod.BitBtn1Click(Sender: TObject); begin
if (cb2.Text='') then showmessage('Вы заполнили не все данные') else
begin dm.temp.Active:=false;
34!
dm.temp.CommandText:='Select id_poz from pozicii where (id_ras_poz=0)'; dm.temp.Active:=true;
if dm.temp.RecordCount=0 then showmessage('Вы не добавили ни одной позиции в заказ') else
begin
dm.com.CommandText:='Insert into rasxod (id_pok_ras,data_ras) values ('+id_pok+',"'+datetostr(dtp1.Date)+'")'; dm.com.Execute;
dm.temp.Active:=false;
dm.temp.CommandText:='Select max(id_ras) from rasxod'; dm.temp.Active:=true;
tmp:=dm.temp.Fields[0].AsString;
dm.com.CommandText:='Update pozicii set id_ras_poz="'+tmp+'" where (id_ras_poz=0)'; dm.com.Execute;
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_tov_poz,kol_poz from pozicii where id_ras_poz='+tmp+''; dm.temp.Active:=true;
While not dm.temp.Eof do begin
dm.com.CommandText:='Update tovar set kol_tov=kol_tov-"'+dm.temp.Fields[1].AsString+'" where id_tov='+dm.temp.fields[0].AsString+'';
dm.com.Execute;
dm.temp.Next;
end;
showmessage('Запись успешно добавлена'); dm.ras.Requery();
closequery;
end;
end;
end;
end.
unit aTip;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TFaTip = class(TForm) Panel1: TPanel; Label2: TLabel; Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
e1: TEdit;
procedure BitBtn2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure BitBtn1Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
FaTip: TFaTip;
implementation
uses datm;
{$R *.dfm}
procedure TFaTip.BitBtn2Click(Sender: TObject); begin
closequery;
end;
35!
procedure TFaTip.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
if tm=1 then begin
dm.com.CommandText:='Update tip set log_t=FALSE WHERE (id_t='+tmp+')'; dm.com.Execute;
end;
e1.clear;
close;
end;
procedure TFaTip.BitBtn1Click(Sender: TObject); begin
if (e1.Text='')then showmessage('Вы заполнили не все данные') else
begin
if tm=0 then begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_t from tip where (nazv_t="'+e1.text+'")'; dm.temp.Active:=true;
if dm.temp.RecordCount>0 then showmessage('Подобная запись уже существует') else
begin
dm.com.CommandText:='Insert into tip (nazv_t) values ("'+e1.Text+'")'; dm.com.Execute;
showmessage('Запись успешно добавлена'); dm.t.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_t from tip where (nazv_t="'+e1.text+'")'; dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (tmp<>dm.temp.Fields[0].asstring) then showmessage('Подобная запись уже существует') else
begin
dm.com.CommandText:='Update tip SET nazv_t="'+e1.Text+'" WHERE (id_t='+tmp+')'; dm.com.Execute;
showmessage('Запись успешно изменена'); dm.t.Requery();
closequery;
end;
end;
end;
end;
end.
unit aTovar;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TFaTovar = class(TForm) Panel1: TPanel;
Label2: TLabel;
Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; e1: TEdit;
36!
cb1: TComboBox; Label1: TLabel; Label3: TLabel; cb2: TComboBox; e2: TEdit; Label4: TLabel; Label5: TLabel; e3: TEdit;
procedure cb1KeyPress(Sender: TObject; var Key: Char); procedure cb2Change(Sender: TObject);
procedure cb1Change(Sender: TObject); procedure BitBtn2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure BitBtn1Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
FaTovar: TFaTovar;
implementation
uses datm, main;
{$R *.dfm}
procedure TFaTovar.cb1KeyPress(Sender: TObject; var Key: Char); begin
key:=#0;
end;
procedure TFaTovar.cb2Change(Sender: TObject); begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_t from tip where (nazv_t="'+cb2.text+'")'; dm.temp.Active:=true;
id_t:=dm.temp.fields[0].asstring; end;
procedure TFaTovar.cb1Change(Sender: TObject); begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_p from proiz where (nazv_p="'+cb1.text+'")'; dm.temp.Active:=true;
id_p:=dm.temp.fields[0].asstring; end;
procedure TFaTovar.BitBtn2Click(Sender: TObject); begin
closequery;
end;
procedure TFaTovar.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
if tm=1 then begin
dm.com.CommandText:='Update tovar set log_tov=FALSE WHERE (id_tov='+tmp+')'; dm.com.Execute;
end;
e1.clear;e2.clear;e3.Clear;
cb1.Clear;cb2.Clear;
close;
end;
procedure TFaTovar.BitBtn1Click(Sender: TObject); begin
if (e1.Text='') or (e2.Text='') or (cb1.Text='') or (cb2.Text='') or (e3.Text='') then showmessage('Вы заполнили не все данные') else
begin
37!
try strtoint(e2.text); except
showmessage('Расфасовка должна быть целым числом'); exit;
end; try
strtofloat(e3.text); except
showmessage('Стоимость должна быть числом'); exit;
end;
if tm=0 then begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_tov from tovar where (nazv_tov="'+e1.text+'") and (id_t_tov='+id_t+') and (id_p_tov='+id_p+') and (rasf_tov='+e2.text+')';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then showmessage('Подобная запись уже существует') else
begin
dm.com.CommandText:='Insert into tovar (nazv_tov,id_t_tov,id_p_tov,rasf_tov,st_tov) values ("'+e1.Text+'",'+id_t+','+id_p +','+e2.text+',"'+e3.Text+'")';
dm.com.Execute;
dm.temp.Active:=false;
dm.temp.CommandText:='Select max(id_tov) from tovar'; dm.temp.Active:=true; tmpC:=dm.temp.Fields[0].AsString;
dm.com.CommandText:='Insert into rCen (id_tov_rc,cena_rc,data_rc) values ('+tmpC+',"'+e3.Text+'","'+datetostr(date)+'")'; dm.com.Execute;
showmessage('Запись успешно добавлена'); dm.tov.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false;
dm.temp.CommandText:='Select id_tov from tovar where (nazv_tov="'+e1.text+'") and (id_t_tov='+id_t+') and (id_p_tov='+id_p+') and (rasf_tov='+e2.text+')';
dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (tmp<>dm.temp.Fields[0].asstring) then showmessage('Подобная запись уже существует') else
begin
dm.com.CommandText:='Update tovar SET nazv_tov="'+e1.Text+'",id_t_tov="'+id_t+'",id_p_tov="'+id_p +'",rasf_tov="'+e2.text+'",st_tov="'+e3.Text+'" WHERE (id_tov='+tmp+')';
dm.com.Execute;
if tmpc<>e3.Text then begin dm.temp.Active:=false;
dm.temp.CommandText:='Select id_rc from rCen WHERE (id_tov_rc='+tmp+') and (data_rc = #'+fmain.data(date)+'#)'; dm.temp.Active:=true;
if dm.temp.RecordCount=0 then begin
dm.com.CommandText:='Insert into rCen (id_tov_rc,cena_rc,data_rc) values ('+tmp+',"'+e3.Text+'","'+datetostr(date)+'")'; dm.com.Execute;
end else
begin
dm.com.CommandText:='update rCen set cena_rc="'+e3.Text+'" where id_rc='+dm.temp.Fields[0].AsString+''; dm.com.Execute;
end;
end;
showmessage('Запись успешно изменена'); dm.tov.Requery();
closequery;
end;
end;
end;
end;
end.
38!
unit chpass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TFchpass = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel;
cb: TComboBox; e1: TEdit;
e2: TEdit; Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject); procedure FormShow(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
Fchpass: TFchpass;
implementation
uses datm;
{$R *.dfm}
procedure TFchpass.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
cb.Clear;
e1.Text:='';e2.Text:='';
close;
end;
procedure TFchpass.BitBtn1Click(Sender: TObject); begin
closequery;
end;
procedure TFchpass.BitBtn2Click(Sender: TObject); begin
if cb.Text='' then showmessage('Вы не выбрали имя пользователя') else if e1.Text='' then showmessage('Вы не ввели пароль')
else if e2.Text='' then showmessage('Вы не ввели подтверждение пароля')
else if e2.Text<>e1.Text then showmessage('Пароль и подтверждение пароля не совпадают') else
begin
dm.com.Commandtext:='Update pass Set pass="'+e2.Text+'" where (login = "'+cb.Text+'")'; dm.com.Execute;
showmessage('Пароль изменен'); closequery;
end;
end;
procedure TFchpass.FormShow(Sender: TObject); begin
cb.Clear;
dm.temp.Active:=false;
dm.temp.CommandText:='Select login from pass order by login';
39!
dm.temp.Active:=true; while not dm.temp.Eof do
begin cb.Items.Add(dm.temp.Fields[0].AsString); dm.temp.Next;
end;
end;
end.
unit Dati;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls;
type
TFDati = class(TForm) Panel1: TPanel; Label2: TLabel; Panel2: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
dtp1: TDateTimePicker; Label1: TLabel;
dtp2: TDateTimePicker;
procedure FormShow(Sender: TObject); procedure BitBtn2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure BitBtn1Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
FDati: TFDati;
implementation
uses datm, main, rCen;
{$R *.dfm}
procedure TFDati.FormShow(Sender: TObject); begin
dtp1.Date:=date;
dtp2.Date:=date;
end;
procedure TFDati.BitBtn2Click(Sender: TObject); begin
closequery;
end;
procedure TFDati.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
close;
end;
procedure TFDati.BitBtn1Click(Sender: TObject); begin
if dtp1.Date>dtp2.Date then begin
showmessage('Дата начала не может быть больше даты конца'); exit;
end;
if tm=1 then begin
40!
dm.pr.Active:=false;
dm.pr.CommandText:='select id_pr,([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс."&[rasf_tov]) as tov,cena_pr,kol_pr,(cena_pr*kol_pr) as st,nazv_pos,data_pr'+
'from tovar,proiz,tip,prixod,post where (id_t=id_t_tov) and (id_p_tov=id_p) and (id_pos=id_pos_pr) and (id_tov=id_tov_pr) and (data_pr between #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#)';
dm.pr.Active:=true; end
else if tm=2 then begin dm.ras.Active:=false;
dm.ras.CommandText:='select id_ras,nazv_pok,(select count(id_poz) from pozicii where (id_ras=id_ras_poz)) as pozic,(select sum(st_poz) '+
'from pozicii where (id_ras=id_ras_poz)) as summa,data_ras from rasxod,pokup where (id_pok=id_pok_ras) and (data_ras between #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#)';
dm.ras.Active:=true;
dm.temp.Active:=false;
dm.temp.CommandText:='select sum((select sum(st_poz) from pozicii where (id_ras=id_ras_poz))) from rasxod,pokup where (id_pok=id_pok_ras) and (data_ras between #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#)';
dm.temp.Active:=true;
showmessage('Общая сумма от реализации составила: '+dm.temp.fields[0].AsString); end
else if tm=3 then begin
dm.temp.Active:=false;
dm.temp.CommandText:='select ([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс.: "&[rasf_tov]&" кг."),count(([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс."&[rasf_tov])) from tovar,proiz,tip,prixod,post '+
'where (id_t=id_t_tov) and (id_p_tov=id_p) and (id_pos=id_pos_pr) and (id_tov=id_tov_pr) and (data_pr between #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#) group by (([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс.: "&[rasf_tov]&" кг.")) '+
'order by count(([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс.: "&[rasf_tov]&" кг.")) desc'; dm.temp.Active:=true;
showmessage('Чаще всего покупался: "'+dm.temp.Fields[0].AsString+'"'+#13+'Всего покупок: '+dm.temp.Fields[1].AsString);
end
else if tm=4 then begin
dm.temp.Active:=false;
dm.temp.CommandText:='select ([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс.: "&[rasf_tov]&" кг."),sum(st_poz) from tovar,proiz,tip,rasxod,pozicii where (id_t=id_t_tov) and (id_p_tov=id_p) and (id_ras=id_ras_poz) and (id_tov=id_tov_poz)'+
'and (data_ras between #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#) group by ([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс.: "&[rasf_tov]&" кг.") order by sum(st_poz) desc';
dm.temp.Active:=true;
showmessage('Наибольший доход принес: "'+dm.temp.Fields[0].AsString+'"'+#13+'Доход составил: '+dm.temp.Fields[1].AsString);
end
else if tm=5 then begin dm.rc.Active:=false;
dm.rc.CommandText:='select ([nazv_tov]&", произв.: "&[nazv_p]&", тип:"&[nazv_t]&", расфс.: "&[rasf_tov]&" кг.") as tov,cena_rc,data_rc from tovar,proiz,tip,rcen where (id_t=id_t_tov) and (id_p_tov=id_p) and (id_tov=id_tov_rc) and (data_rc between #'+fmain.data(dtp1.Date)+'# and #'+fmain.data(dtp2.Date)+'#) and (id_tov='+tmp+') order by data_rc';
dm.rc.Active:=true;
frCen.ShowModal;
end;
end;
end.
unit datm;
interface
uses
SysUtils, Classes, DB, ADODB, Dialogs;
type
TDM = class(TDataModule) ado: TADOConnection;
41!