📄 unitdh.pas
字号:
unit UnitDH;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, DBGrids, ComCtrls;
type
TFrmDH = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Panel2: TPanel;
DBGrid1: TDBGrid;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
ComboBox3: TComboBox;
Panel3: TPanel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Label5: TLabel;
Edit3: TEdit;
Label6: TLabel;
ComboBox1: TComboBox;
Edit1: TEdit;
Label7: TLabel;
Edit4: TEdit;
Label8: TLabel;
DateTimePicker1: TDateTimePicker;
GroupBox1: TGroupBox;
Label9: TLabel;
Label10: TLabel;
Image1: TImage;
Label2: TLabel;
Label11: TLabel;
Memo1: TMemo;
Label12: TLabel;
Edit5: TEdit;
procedure DIS;
procedure CLS;
procedure ENA;
procedure ComboBox3DropDown(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmDH: TFrmDH;
formid,personid: integer;
implementation
uses UnitDM;
{$R *.dfm}
procedure TFrmDH.DIS;
var
i:integer;
begin
for i := componentcount - 1 downto 0 do
begin
if (components[i] is TComboBox) then
begin
TCombobox(components[i]).Enabled := false;
TCombobox(components[i]).Color := clLtGray;
end;
if (Components[i] is TEdit) then
begin
TEdit(Components[i]).Enabled := false;
TEdit(Components[i]).Color := clLtGray;
end;
if (Components[i] is TMemo) then
begin
TMemo(Components[i]).enabled := false;
TMemo(Components[i]).Color := clLtGray;
end;
DateTimepicker1.Enabled := false;
DateTimePicker1.Color := clLtGray;
end;
end;
procedure TFrmDH.CLS;
var
i: integer;
begin
for i := componentcount - 1 downto 0 do
begin
if (Components[i] is TMemo) then
TMemo(Components[i]).Clear;
Datetimepicker1.CleanupInstance;
end;
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
end;
procedure TFrmDH.ENA;
var
i: integer;
begin
for i := componentcount - 1 downto 0 do
begin
if (components[i] is TCombobox) then
begin
TCombobox(components[i]).Enabled := true;
TCombobox(components[i]).Color := clwindow;
end;
if (Components[i] is TEdit) then
begin
TEdit(Components[i]).Enabled := true;
TEdit(Components[i]).Color := clwindow;
end;
if (Components[i] is TMemo) then
begin
TMemo(Components[i]).Enabled := true;
TMemo(Components[i]).Color := clwindow;
end;
DateTimepicker1.Enabled := true;
DateTimePicker1.Color := clwindow;
end;
end;
procedure TFrmDH.ComboBox3DropDown(Sender: TObject);
var
i: integer;
begin
Combobox3.Clear;
with DM.ADOQTEMP1 do
begin
close;
SQL.Clear;
SQL.Add('select order_person_name from order_person');
if (not prepared) then
prepared := true;
try
active := true;
except
ExecSQL;
end;
if recordcount > 0 then
first;
for i := 0 to recordcount - 1 do
begin
combobox3.Items.Add(fieldbyname('order_person_name').AsString);
next;
end;
end;
end;
procedure TFrmDH.ComboBox3Change(Sender: TObject);
begin
Combobox1.Clear;
with DM.ADOQTEMP2 do
begin
close;
SQL.Clear;
SQL.Add('SELECT distinct order_person_id FROM order_person WHERE order_person_name = :name');
parameters.ParamByName('name').Value := trim(combobox3.Text);
if (not prepared) then
prepared := true;
try
open;
except
ExecSQL;
end;
Combobox1.Text := fieldbyname('order_person_id').AsString;
end;
end;
procedure TFrmDH.BitBtn4Click(Sender: TObject);
var
str1, str2, str3: string;
num: integer;
pri: real;
begin
personid := strtoint(combobox1.Text);
num := strtoint(Edit4.Text);
pri := strtofloat(Edit1.Text);
str1 := 'insert into order_pay(operator_id, order_person_id, order_person_name, pay_finish, pay_over) values(:op_id,:id, :name, :finish, :over) ';
str2 := 'insert into orders (order_form_id, operator_id, order_prod_id, order_prod_name, order_prod_price, '
+ ' order_prod_number, order_money, order_person_id, order_person_name, order_time, order_deliver_time, order_memo, '
+ ' order_decision) values(:id, :opid, :prodid, :prodname, :price, :number, :money, :personid, :personname, :time1, :time2, :memo, :decision) ';
str3 := 'select order_form_id from order_pay where order_person_id = :person_id and pay_over = 0 ';
DM.conn.BeginTrans;
try
begin
with DM.ADOQTEMP1 do
begin
close;
SQL.Clear;
SQL.Add(str3);
parameters.ParamByName('person_id').Value := personid;
if (not prepared) then
prepared := true;
open;
if (recordcount = 0) then
begin
with DM.ADOQTEMP2 do
begin
close;
SQL.Clear;
SQL.Add(str1);
parameters.ParamByName('op_id').Value := 1;
parameters.ParamByName('id').Value := strtoint(combobox1.Text);
parameters.ParamByName('name').Value := trim(combobox3.Text);
parameters.ParamByName('finish').Value := 0;
parameters.ParamByName('over').Value := 0;
if (not prepared) then
prepared := true;
ExecSQL;
close;
SQL.Clear;
SQL.Add('select order_form_id from order_pay where pay_over = 0');
open;
formid := fieldbyname('order_form_id').Value;
end;
end;
end;
//增加一条订货记录
with DM.ADOQTEMP3 do
begin
close;
SQL.Clear;
SQL.Add(str2);
parameters.ParamByName('id').Value := formid;
parameters.ParamByName('opid').Value := 0;
parameters.ParamByName('prodid').Value := trim(Edit2.Text);
parameters.ParamByName('prodname').Value := trim(Edit3.Text);
parameters.ParamByName('price').Value := pri;
parameters.ParamByName('number').Value := num;
parameters.ParamByName('money').Value := pri * num;
parameters.ParamByName('personid').Value := strtoint(Combobox1.Text);
parameters.ParamByName('personname').Value := trim(Combobox3.Text);
parameters.ParamByName('time1').Value := now;
parameters.ParamByName('time2').Value := datetimepicker1.DateTime;
parameters.ParamByName('memo').Value := trim(memo1.Text);
parameters.ParamByName('decision').Value := 1;
if (not prepared) then
prepared := true;
ExecSQL;
end;
DM.conn.CommitTrans;
end;
except
showmessage('发生错误,窗口将关闭,系统将从错误中恢复过来!');
DM.conn.RollbackTrans;
self.Close;
self.Free;
exit;
end;
combobox1.Enabled := false;
combobox3.Enabled := false;
BitBtn2.Enabled := true;
BitBtn3.Enabled := true;
CLS;
Label10.Caption := floattostr(strtofloat(Label10.Caption) + pri * num);
DM.ADOQTEMP2.Close;
DM.ADOQDH.Close;
DM.ADOQDH.Open;
BitBtn5.Enabled := false;
end;
procedure TFrmDH.BitBtn2Click(Sender: TObject);
var
str1, str2: string;
begin
str1 := 'delete from orders where order_decision = 0';
str2 := 'delete from order_pay where order_form_id = :id';
with DM.ADOQTEMP2 do
begin
close;
SQL.Clear;
SQL.Add(str1);
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('操作失败,请再试!');
exit;
end;
close;
SQL.Clear;
SQL.Add(str2);
parameters.ParamByName('id').Value := formid;
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('操作失败,请再试!');
exit;
end;
Label6.Caption := inttostr(0);
end;
CLS;
combobox3.Clear;
combobox1.Clear;
DIS;
BitBtn3.Enabled := false;
BitBtn5.Enabled := true;
BitBtn1.Enabled := true;
BitBtn2.Enabled := false;
end;
procedure TFrmDH.FormShow(Sender: TObject);
begin
DIS;
DM.ADOQDH.Close;
DM.ADOQDH.Open;
BitBtn1.Enabled := true;
BitBtn2.Enabled := false;
BitBtn3.Enabled := false;
BitBtn5.Enabled := true;
end;
procedure TFrmDH.BitBtn3Click(Sender: TObject);
var
str1: string;
begin
str1 := 'delete from orders where order_id = :id';
with DM.ADOQTEMP1 do
begin
close;
SQL.Clear;
SQL.Add(str1);
parameters.ParamByName('id').Value := DM.ADOQDH.fieldbyname('order_id').Value;
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('操作失败,请再试!');
end;
end;
DM.ADOQDH.Close;
DM.ADOQDH.Open;
end;
procedure TFrmDH.Image1Click(Sender: TObject);
var
str1, str2: string;
mon1, mon2: real;
begin
if Edit5.Text = '' then
mon1 := 0
else
mon1 := strtofloat(Edit5.Text);
if Label10.Caption = '' then
mon2 := 0
else
mon2 := strtofloat(Label10.Caption);
if combobox1.Text = '' then
personid := 0
else
personid := strtoint(Combobox1.Text);
str1 := 'update orders set order_decision = 1 where order_form_id = :id';
str2 := 'update order_pay set order_total_money = :money, order_pre_money = :premoney, '
+ ' order_owe_money = :owemoney, pay_over = :over where order_person_id = :id and pay_finish = 0 and order_form_id = :formid ';
//str3 := 'update orders set order_decision = 0 where order_form_id = :id';
with DM.ADOQTEMP3 do
begin
close;
SQL.Clear;
SQL.Add(str1);
parameters.ParamByName('id').Value := formid;
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('操作失败,请再试!');
exit;
end;
close;
SQL.Clear;
SQL.Add(str2);
parameters.ParamByName('money').Value := mon2;
parameters.ParamByName('premoney').Value := mon1;
parameters.ParamByName('owemoney').Value := mon2 - mon1;
parameters.ParamByName('over').Value := 1;
parameters.ParamByName('id').Value := personid;
parameters.ParamByName('formid').Value := formid;
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('发生错误,窗口将关闭,系统将从错误中恢复过来!');
self.Close;
self.Free;
end;
end;
DIS;
BitBtn1.Enabled := true;
BitBtn2.Enabled := false;
BitBtn3.Enabled := false;
BitBtn5.Enabled := true;
end;
procedure TFrmDH.BitBtn1Click(Sender: TObject);
var str1, str2: string;
begin
str1 := 'select * from order_pay where pay_finish = 0 and pay_over = :over';
str2 := 'delete from orders where order_form_id = :form_id ';
with DM.ADOQTEMP1 do
begin
close;
SQL.Clear;
SQL.Add(str1);
parameters.ParamByName('over').Value := 0;
if (not prepared) then
prepared := true;
try
open;
except
ExecSQL;
end;
if recordcount > 0 then
begin
with DM.ADOQTEMP2 do
begin
close;
SQL.Clear;
SQL.Add(str2);
parameters.ParamByName('form_id').Value := DM.ADOQTEMP1.fieldbyname('order_form_id').Value ;
if (not prepared) then
prepared := true;
try
execSQL;
except
showmessage('发生错误,请再试!');
exit;
end;
end;
end;
end;
ENA;
CLS;
combobox3.SetFocus;
BitBtn1.Enabled := false;
BitBtn2.Enabled := true;
Combobox1.Clear;
Combobox3.Clear;
Label10.Caption := '0';
Edit5.Clear;
DM.ADOQDH.Close;
DM.ADOQDH.Open;
end;
procedure TFrmDH.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if (key = #13) then
Image1Click(self);
end;
procedure TFrmDH.FormCreate(Sender: TObject);
var
str1, str2: string;
begin
str1 := 'delete from orders where order_decision = 0';
str2 := 'delete from order_pay where pay_over = 0';
with DM.ADOQTEMP2 do
begin
close;
SQL.Clear;
SQL.Add(str1);
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('发生错误,窗口将关闭,系统将从错误中恢复过来!');
self.Close;
self.Free;
end;
close;
SQL.Clear;
SQL.Add(str2);
if (not prepared) then
prepared := true;
try
ExecSQL;
except
showmessage('发生错误,窗口将关闭,系统将从错误中恢复过来!');
self.Close;
self.Free;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -