⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitdh.pas

📁 这是一个很好的超市管理系统
💻 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 + -