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

📄 unitxiangpin.pas

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

interface

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

type
  TFrmXiangPin = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    DBComboBox1: TDBComboBox;
    Label2: TLabel;
    Label3: TLabel;
    DBComboBox2: TDBComboBox;
    Label4: TLabel;
    DBEdit2: TDBEdit;
    Label5: TLabel;
    DBEdit3: TDBEdit;
    GroupBox2: TGroupBox;
    Label8: TLabel;
    ComboBox1: TComboBox;
    Label9: TLabel;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    DBComboBox3: TDBComboBox;
    DBGrid1: TDBGrid;
    Label7: TLabel;
    DBEdit1: TDBEdit;
    ComboBox2: TComboBox;
    Label10: TLabel;
    DBComboBox4: TDBComboBox;
    Label11: TLabel;
    ComboBox3: TComboBox;
    procedure DIS;
    procedure ENA;
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBComboBox1DropDown(Sender: TObject);
    procedure own(Sender: TObject);
    procedure DBComboBox2DropDown(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure DBComboBox4Change(Sender: TObject);
    procedure DBComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    sign: char;
    { Public declarations }
  end;

var
  FrmXiangPin: TFrmXiangPin;

implementation

uses UnitDM, UnitLogin;

{$R *.dfm}

procedure TFrmXiangPin.DIS;
begin
  DBcombobox1.Enabled := false;
  DBCombobox1.Color := clLtGray;
  DBcombobox2.Enabled := false;
  DBCombobox2.Color := clLtGray;
  DBcombobox3.Enabled := false;
  DBCombobox3.Color := clLtGray;
  DBCombobox4.Enabled := false;
  DBCombobox4.Color := clLtGray;
  DBEdit1.Enabled := false;
  DBEdit1.Color := clLtGray;
  DBEdit2.Enabled := false;
  DBEdit2.Color := clLtGray;
  DBEdit3.Enabled := false;
  DBEdit3.Color := clLtGray;
  //DateTimePicker1.Enabled := false;
  //DateTimePicker1.Color := clLtGray;
end;

procedure TFrmXiangPin.ENA;
begin
  DBcombobox1.Enabled := true;
  DBcombobox1.Color := clWindow;
  DBcombobox2.Enabled := true;
  DBcombobox2.Color := clWindow;
  DBcombobox3.Enabled := true;
  DBCombobox3.color := clWindow;
  DBCombobox4.Enabled := true;
  DBcombobox4.Color := clwindow;
  DBEdit1.Enabled := true;
  DBEdit1.Color := clwindow;
  DBEdit2.Enabled := true;
  DBEdit2.Color := clWindow;
  DBEdit3.Enabled := true;
  DBEdit3.Color := clWindow;
  //DateTimePicker1.Enabled := true;
  //DateTimePicker1.Color := clWindow;
end;
procedure TFrmXiangPin.FormShow(Sender: TObject);
begin
  DIS;
  DM.ADOQXPXX1.Open;
  DM.ADOTXPXX.Open;
  DM.ADOTXPJH.Open;
  button1.Enabled := false;
  button2.Enabled := false;
end;

procedure TFrmXiangPin.BitBtn2Click(Sender: TObject);
begin
  DM.ADOQXPXX1.Close;
  DM.ADOQTEMP1.Close;
  DM.ADOTXPXX.Close;
  DM.ADOTXPJH.Close;
  DM.ADOQTEMP2.Close;
  self.Close;
end;

procedure TFrmXiangPin.Button4Click(Sender: TObject);
begin
  sign := '0';
  button4.Enabled := false;
  ENA;
  button1.Enabled := true;
  button2.Enabled := true;
  DM.ADOTXPXX.Open;
  DM.ADOTXPXX.Append;
  DM.ADOTXPJH.Open;
  DM.ADOTXPJH.Append;
  //DM.ADOTXPJH.FieldByName('in_time').AsDateTime := DateTimePicker1.Date;
  button5.Enabled := false;
  button6.Enabled := false;
end;

procedure TFrmXiangPin.Button1Click(Sender: TObject);
  //str1,str2: string;
  //stock1, sale1, temp2, temp3, temp4: Integer;
begin
  //str1 := 'select * from prod where prod_id = :id ';
  //str2 := 'UPDATE prod SET prod_sort = :sort1, prod_name = :name1, prod_unit = :unit1, prod_price = :price1, prod_stock = :stock1, prod_sale = :sale1 WHERE prod_id = :id';
  //保证各字段都完整填写好
  if DBCombobox1.Text = '' then
  begin
    showmessage('商品类别没有填写!');
    DBCombobox1.SetFocus;
    exit;
  end;
  if DBCombobox4.Text = '' then
  begin
    showmessage('商品编号没有填写!');
    exit;
  end;
  if DBCombobox2.Text = '' then
  begin
    showmessage('商品单位没有填写!');
    DBCombobox2.SetFocus;
    exit;
  end;
  if DBCombobox3.Text = '' then
  begin
    showmessage('商品名称没有填写!');
    DBCombobox3.SetFocus;
    exit;
  end;
  if DBEdit2.text = '' then
  begin
    showmessage('进货单价没有填写!');
    DBEdit3.setFocus;
    exit;
  end;
  if DBEdit1.Text = '' then
  begin
    showmessage('销售单价没有填写!');
    DBEdit1.SetFocus;
    exit;
  end;
  if DBEdit2.Text = '' then
  begin
    showmessage('进货数量没有填写!');
    DBEdit2.SetFocus;
    exit;
  end;
 { if datetimetostr(DateTimePicker1.date) = '' then
  begin
    showmessage('进货日期没有填写!');
    DateTimePicker1.SetFocus;
    exit;
  end; }
  //修改进货标志
 
  {if (sign = '1') then
  begin
    sign := '';
    with DM.ADOQTEMP2 do
    begin
      close;
      SQL.Clear;
      SQL.Add('select prod_stock, prod_sale from prod where prod_id = :id');
      parameters.ParamByName('id').Value := trim(DBCombobox4.Text);
      if (not prepared) then
        prepared := true;
      active := true;
      temp2 := fieldbyname('prod_stock').AsInteger;
      temp3 := fieldbyname('prod_sale').AsInteger;
    end;
    temp4 := temp2 + (strtoint(DBEdit3.Text) - temp1);
    if (temp4 < 0) then
    begin
      showmessage('已销售出大部分该样商品,不能够修改该样商品的进货信息了!');
      exit;
    end;
    //DM.ADOTXPJH.Cancel;
    //修改进货商品信息
    with DM.ADOQTEMP1 do
    begin
      close;
      SQL.Clear;
      SQL.Add('update stock set operator_id = :opid, in_prod_id = :id, in_prod_name = :name, in_price = :price, in_number = :number where in_id = :ids');
      parameters.ParamByName('opid').Value := 1;//auser.userid;
      parameters.ParamByName('id').Value := trim(DBCombobox4.Text);
      parameters.ParamByName('name').Value := trim(DBCombobox3.Text);
      parameters.ParamByName('price').Value := strtofloat(DBEdit2.Text);
      parameters.ParamByName('number').Value := strtoint(DBEdit3.Text);
      //parameters.ParamByName('time').Value := Datetimepicker1.Date;
      parameters.ParamByName('ids').Value := DM.ADOQXPXX1.fieldbyname('in_id').AsString;
      if (not prepared) then
          prepared := true;
      try
        execSQL;
      except
        showmessage('修改数据失败,请再试!');
        button2click(self);
        exit;
      end;
    end;
    with DM.ADOQTEMP1 do
    begin
      close;
      SQL.Clear;
      SQL.Add(str2);
      //str2 := 'UPDATE prod SET prod_sort = :sort1, prod_name = :name1, prod_unit = :unit1, prod_price = :price1, prod_stock = :stock1, prod_sale = :sale1 WHERE prod_id = :id';
      parameters.ParamByName('sort1').Value := trim(DBCombobox1.Text);
      parameters.ParamByName('name1').Value := trim(DBCombobox3.Text);
      parameters.ParamByName('unit1').Value := trim(DBcombobox2.Text);
      parameters.ParamByName('price1').Value := strtofloat(DBEdit1.Text);
      parameters.ParamByName('stock1').Value := temp4;
      parameters.ParamByName('sale1').Value := temp3;
      parameters.ParamByName('id').Value := trim(DBCombobox4.Text);
      if (not prepared) then
        prepared := true;
      try
        ExecSQL;
      except
        //showmessage('发生错误,数据修改失败,请再试!');
        close;
        SQL.Clear;
        SQL.Add('update stock set in_prod_id = :id, in_prod_name = :name, in_price = :price, in_number = :number, in_time = :time where in_id = :ids');
        parameters.ParamByName('id').Value := DM.ADOQXPXX1.fieldbyname('prod_id').AsString;
        parameters.ParamByName('name').Value := DM.ADOQXPXX1.fieldbyname('prod_name').AsString;
        parameters.ParamByName('price').Value := DM.ADOQXPXX1.fieldbyname('in_price').AsFloat;
        parameters.ParamByName('number').Value := temp1;
        parameters.ParamByName('time').Value := DM.ADOQXPXX1.fieldbyname('in_time').AsDateTime;
        parameters.ParamByName('ids').Value := DM.ADOQXPXX1.fieldbyname('in_id').Value;
        if (not prepared)then
          prepared := true;
        try
          execSQL;
        except
          showmessage('发生严重错误,请把刚修改的数据改回原样!');
          button2click(self);
          close;
          exit;
        end;
      end;
    end;
  end
  //当sign不等于on时,由修改状态转为向进货表插入一条进货记录
  else
  begin
  with DM.ADOTXPJH do
  begin
    fieldbyname('in_prod_id').AsString := trim(DBCombobox4.Text);
    fieldbyname('in_prod_name').AsString := trim(DBCombobox3.Text);
    fieldbyname('in_price').AsFloat := strtofloat(DBEdit2.Text);
    fieldbyname('in_number').AsInteger := strtoint(DBEDit3.Text);
    //fieldbyname('in_time').AsDateTime := Datetimepicker1.Date;
    post;
  end; }
  with DM.ADOSPUpdateStock do
  begin
    parameters.ParamByName('@in_id').Value := DM.ADOQXPXX1.fieldbyname('in_id').Value;
    parameters.ParamByName('@operator_id').Value := 1;
    parameters.ParamByName('@in_prod_id').Value := DBCombobox4.Text;
    parameters.ParamByName('@in_prod_name').Value := DBCombobox3.Text;
    parameters.ParamByName('@in_price').Value := strtofloat(DBEdit2.Text);
    parameters.ParamByName('@in_number').Value := strtoint(DBEdit3.Text);
    parameters.ParamByName('@sign').Value := sign;
    parameters.ParamByName('@prod_price').Value := strtofloat(DBEdit1.Text);
    parameters.ParamByName('@prod_sort').Value := DBCombobox1.text;
    parameters.ParamByName('@prod_unit').Value := DBCombobox2.Text;
    try
      Execproc;
    except
      showmessage('发生错误,执行失败!');
      exit;
    end;
  end;
  {
  //向商品表插入一条记录或者只修改记录
  with DM.ADOQTEMP1 do
  begin
    if active then
      active := false;
    SQL.Clear;
    SQL.Add(str1);
    parameters.ParamByName('id').Value := trim(DBcombobox4.Text);
    if (not prepared) then
      prepared := true;
    active := true;
    //插入记录
    if recordcount = 0 then
    begin
      DM.ADOTXPXX.FieldByName('prod_sort').AsString := trim(DBCombobox1.Text);
      DM.ADOTXPXX.FieldByName('prod_id').AsString := trim(DBCombobox4.Text);
      DM.ADOTXPXX.FieldByName('prod_unit').AsString := trim(DBCombobox2.Text);
      DM.ADOTXPXX.FieldByName('prod_name').AsString := trim(DBcombobox3.Text);
      DM.ADOTXPXX.FieldByName('prod_price').AsFloat := strtofloat(DBEdit1.text);
      DM.ADOTXPXX.FieldByName('prod_stock').AsInteger := strtoint(DBEdit3.Text);
      DM.ADOTXPXX.FieldByName('prod_sale').AsInteger := 0;
      try
        DM.ADOTXPXX.Post;
      except
        //showmessage('软件发生错误,操作失败!请重新进行上次操作!');
        try
          DM.ADOTXPJH.Last;
          DM.ADOTXPJH.Delete;
        except
          showmessage('发生严重错误,请把刚添加的数据删除掉!');
          button2click(self);
          exit;
        end;
      end;

⌨️ 快捷键说明

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