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

📄 unitxpxs.pas

📁 这是一个很好的超市管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit UnitXPXS;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, Mask, DBCtrls;

type
  TFrmXPXS = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Label3: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit1: TEdit;
    Image7: TImage;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label9: TLabel;
    ComboBox3: TComboBox;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure DIS;
    procedure ENA;
    procedure CLS;
    procedure ComboBox1DropDown(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure Combobox3Change(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmXPXS: TFrmXPXS;

implementation

uses UnitDM;

{$R *.dfm}

procedure TFrmXPXS.DIS;
begin
  Combobox1.Enabled := false;
  Combobox1.Color := clLtGray;
  Combobox2.Enabled := false;
  Combobox2.Color := clLtGray;
  Combobox3.Visible := false;
  Edit2.Visible := false;
  Edit3.Visible := false;
  image4.Visible := false;
  image5.Visible := false;
  image6.Visible := false;
  Label3.Visible := false;
  Label4.Visible := false;
  Label9.Visible := false;
end;

procedure TFrmXPXS.ENA;
begin
  Combobox1.Enabled := true;
  Combobox1.Color := clWindow;
  Combobox2.Enabled := true;
  Combobox2.Color := clWindow;
  Combobox3.Visible := true;
  Edit3.Visible := true;
  Edit2.Visible := true;
  image5.Visible := true;
  image4.Visible := true;
  Label3.Visible := true;
  Label4.Visible := true;
  Label9.Visible := true;
end;

procedure TFrmXPXS.CLS;
begin
  Combobox3.clear;
  Edit2.clear;
  Edit3.Clear;
end;

procedure TFrmXPXS.ComboBox1DropDown(Sender: TObject);
var i: integer;
begin
  Combobox1.Clear;
  with DM.ADOQTEMP3 do
  begin
    close;
    SQL.Clear;
    SQL.Add('select distinct prod_sort from prod');
    if (not prepared) then
      prepared := true;
    active := true;
    if recordcount > 0 then
      first;
    for i := 0 to recordcount - 1 do
    begin
      combobox1.Items.Add(fieldbyname('prod_sort').AsString);
      next;
    end;
  end;
end;

procedure TFrmXPXS.ComboBox1Change(Sender: TObject);
var i: integer;
begin
  combobox2.Clear;
  Combobox3.Clear;
  with DM.ADOQTEMP3 do
  begin
    close;
    SQL.Clear;
    SQL.Add('SELECT  distinct prod_name FROM prod WHERE prod_sort = :sort');
    parameters.ParamByName('sort').Value := trim(combobox1.Text);
    if (not prepared) then
      prepared := true;
    active :=  true;
    if recordcount > 0 then
      first;
    for i := 0 to recordcount - 1 do
    begin
      combobox2.Items.Add(fieldbyname('prod_name').AsString);
      next;
    end;
  end;
  with DM.ADOQTEMP3 do
  begin
    close;
    SQL.Clear;
    SQL.Add('select distinct prod_id from prod where prod_sort = :sort');
    parameters.ParamByName('sort').Value := trim(combobox1.Text);
    if (not prepared) then
      prepared := true;
    active := true;
    if recordcount > 0 then
      first;
    for i := 0 to recordcount - 1 do
    begin
      Combobox3.Items.Add(fieldbyname('prod_id').AsString);
      next;
    end;
  end;

end;

procedure TFrmXPXS.ComboBox2Change(Sender: TObject);
var i: integer;
begin
  with DM.ADOQTEMP3 do
  begin
    Combobox3.Clear;
    close;
    SQL.Clear;
    SQL.Add('select distinct prod_id from prod where prod_name = :name');
    parameters.ParamByName('name').Value := trim(combobox2.Text);
    if (not prepared) then
      prepared := true;
    active := true;
    if recordcount > 0 then
      first;
    for i := 0 to recordcount - 1 do
    begin
      Combobox3.Items.Add(fieldbyname('prod_id').asstring);
      next;
    end;
  end;
end;

procedure TFrmXPXS.Image7Click(Sender: TObject);
begin
  ModalResult := mrOK;
  with DM do
  begin
    ADOQTEMP3.Close;
    ADOQTEMP4.Close;
    ADOQXPXS1.Close;
    ADOQXPXS.Close;
  end;
  self.Close;
end;

procedure TFrmXPXS.Combobox3Change(Sender: TObject);
begin
  Combobox1.Clear;
  Combobox2.Clear;
  with DM.ADOQTEMP3 do
  begin
    close;
    SQL.Clear;
    SQL.Add('select prod_price from prod where prod_id = :id');
    parameters.ParamByName('id').Value := trim(Combobox3.Text);
    if (not prepared) then
      prepared := true;
    active := true;
    Edit2.Clear;
    //Edit2.SetFocus;
    Edit3.Text := fieldbyname('prod_price').AsString;
  end;
  DM.ADOQXPXS1.Close;
  DM.ADOQXPXS1.Open;
end;

procedure TFrmXPXS.Image1Click(Sender: TObject);
begin
  Label6.Caption := '0';
  ENA;
  image7.Enabled := false;
  Edit1.Clear;
  with DM.ADOQTEMP1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('delete from sell where sell_pay = 0');
    if (not prepared) then
      prepared := true;
    execSQL;
  end;
  DM.ADOQXPXS1.Close;
  DM.ADOQXPXS1.Open;
end;
procedure TFrmXPXS.Image5Click(Sender: TObject);
var
  temp1: integer;
  str1,str2, str4, str5, str6: string;
  money1: real;
begin
  if (Combobox3.Text = '') then
  begin
    showmessage('销售商品编号没有填写!');
    exit;
  end;
  if (Edit2.Text = '') then
  begin
    showmessage('购买数量没有填写!');
    exit;
  end;
  if (Edit3.Text = '') then
  begin
    showmessage('销售商品单价没有填写!');
    exit;
  end;
  str1 := 'select * from prod where prod_id = :id';
  str2 := 'insert into sell(sell_prod_id, sell_prod_name, sell_prod_price, sell_number, '
     + ' sell_money, sell_pay) values(:id, :name, :price, :number, :money, :pay )';
  //str3 := 'update prod set (prod_stock = :stock, prod_sale = :sale) where prod_id = :id';
  str4 := 'delete from sell where sell_prod_id = :id, sell_time = :time';
  str5 := 'select * from sell where sell_prod_id = :id and sell_pay = 0';
  str6 := 'update sell set sell_number = :number where sell_pay = 0';
  with DM.ADOQTEMP4 do
  begin
    if active then
      active := false;
    SQL.clear;
    SQL.add(str1);
    parameters.ParamByName('id').Value := trim(Combobox3.Text);
    if (not prepared) then
      prepared := true;
    active := true;
    temp1 := fieldbyname('prod_stock').AsInteger - strtoint(Edit2.Text);
  end;
  if temp1 < 0 then
  begin
    showmessage('交易失败,商品库存数量不足!');
    exit;
  end;
  with DM.ADOQTEMP3 do
  begin
    close;
    SQL.Clear;
    SQL.Add(str5);
    parameters.ParamByName('id').Value := trim(Combobox3.Text);
    if (not prepared) then
      prepared := true;
    active := true;
    if (recordcount = 0) then
    begin
      with DM.ADOQXPXS do
      begin
        if active then
          active := false;
        SQL.Clear;
        SQL.Add(str2);
        parameters.ParamByName('id').Value := trim(Combobox3.Text);
        parameters.ParamByName('name').Value := DM.ADOQTEMP4.fieldbyname('prod_name').AsString;
        parameters.ParamByName('price').Value := strtofloat(Edit3.Text);
        parameters.ParamByName('number').Value := strtoint(Edit2.Text);
        //parameters.ParamByName('time').Value := times;
        parameters.paramByName('money').Value := strtofloat(Edit3.Text) * strtoint(Edit2.Text);
        parameters.ParamByName('pay').Value := 0;
        if (not prepared) then
            prepared := true;
        try
          ExecSQL;
        except
          showmessage('操作失败,请再试!');
          exit;
        end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -