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

📄 unitxiangpin.pas

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

    //商品表已存在一条该编号的商品记录,所以只需修改该条记录
    else
    begin
      DM.ADOTXPXX.Cancel;
        //sign := '';
      first;
      stock1 := 0;
      sale1 := 0;
      stock1 := fieldbyname('prod_stock').AsInteger;
      sale1 := fieldbyname('prod_sale').AsInteger;
      with DM.ADOQTEMP1 do
      begin
        edit;
        fieldbyname('prod_sort').AsString := trim(DBcombobox1.Text);
        fieldbyname('prod_id').AsString := trim(DBcombobox4.Text);
        fieldbyname('prod_unit').AsString := trim(DBcombobox2.Text);
        fieldbyname('prod_name').AsString := trim(DBCombobox3.Text);
        fieldbyname('prod_price').AsFloat := strtofloat(DBEdit1.Text);
        fieldbyname('prod_stock').AsInteger := stock1 + strtoint(DBEdit3.Text);
        fieldbyname('prod_sale').AsInteger := sale1;
      end;
        try
        DM.ADOQTEMP1.Post;
      except
        //showmessage('软件发生错误,操作失败!请重新进行上次操作!');
        try
          DM.ADOTXPJH.Last;
          DM.ADOTXPJH.Delete;
        except
          showmessage('发生严重错误,请把刚添加的数据删除掉!');
          button2click(self);
          exit;
        end;
      end;
      {if active then
        active := false;
      SQL.Clear;
      SQL.Add(str2);
      parameters.ParamByName('sort1').Value := trim(DBCombobox1.text);
      parameters.ParamByName('unit1').Value := trim(DBCombobox2.text);
      parameters.ParamByName('price1').Value := strtofloat(DBEdit1.Text);
      parameters.ParamByName('stock1').Value := stock1 + strtoint(DBEdit3.Text);
      parameters.ParamByName('sale1').Value := sale1;
      parameters.ParamByName('name1').Value := trim(DBCombobox3.text);
      try
        if (not prepared) then
          prepared := true;
          execSQL;
      except
        messagebox(0,'入库失败!','错误',MB_OK+MB_ICONERROR);
      end;
    end;
    end;
  end;
  end;}

  DM.ADOQXPXX1.Close;
  DM.ADOQXPXX1.Open;
  DBCombobox1.Clear;
  DBCombobox2.Clear;
  DBcombobox3.Clear;
  DBEdit2.Clear;
  DBEdit3.Clear;
  //DateTimePicker1.CleanupInstance;
  Button1.Enabled := false;
  Button2.Enabled := false;
  button4.Enabled := true;
  Button5.Enabled := true;
  Button6.Enabled := true;
  DIS;
end;


procedure TFrmXiangPin.Button2Click(Sender: TObject);
begin
  DM.ADOTXPXX.Cancel;
  DM.ADOTXPJH.Cancel;
  DBcombobox1.Clear;
  DBcombobox2.Clear;
  DBcombobox3.Clear;
  DBEdit2.Clear;
  DBEdit3.Clear;
  //DateTimePicker1.CleanupInstance;
  Button1.Enabled := false;
  Button2.Enabled := false;
  button4.Enabled := true;
  Button5.Enabled := true;
  Button6.Enabled := true;
  DIS;
  //sign := '0';
end;

procedure TFrmXiangPin.Button5Click(Sender: TObject);
{var
  str2,str3, str4, str5: string;
  in_ids,  in_numbers: integer;
  in_prod_ids, in_prod_names: string;
  in_prices : single;
  in_times: Tdatetime; }
begin
  if messagebox(0, '删除的商品将不能恢复,确定要删除吗?','警告',MB_OKCANCEL+MB_ICONWARNING) = IDOK then
  begin
    with DM.ADOSPDeleteStock do
    begin
      parameters.ParamByName('@in_id').Value := DM.ADOQXPXX1.fieldbyname('in_id').Value;
      parameters.ParamByName('@prod_id').Value := DM.ADOQXPXX1.fieldbyname('prod_id').Value;
      parameters.ParamByName('@in_number').Value := DM.ADOQXPXX1.fieldbyname('in_number').Value;
      try
        Execproc;
      except
        showmessage('操作失败!');
        exit;
      end;
    end;
  end
    {with DM.ADOQXPXX1 do
    begin
      in_ids := fieldbyname('in_id').AsInteger;
      in_prod_ids := fieldbyname('prod_id').AsString;
      in_prod_names := fieldbyname('prod_name').AsString;
      in_prices := fieldbyname('in_price').AsFloat;
      in_numbers := fieldbyname('in_number').AsInteger;
      in_times := fieldbyname('in_time').AsDateTime;
    end;
    str2 := 'DELETE FROM prod WHERE prod_id LIKE :id';
    str3 := 'DELETE FROM stock WHERE in_id = :id ';//and in_time = :time;
    str4 := 'update prod set prod_stock = prod_stock - :stock where prod_id = :id';
    str5 := 'insert into stock (operator_id, in_id, in_prod_id, in_prod_name, in_price, in_number, in_time) '
      + ' values(:opid, :ids, :prod_ids, :prod_names, :prices, :numbers, :time) ';
    //从进货表中删除一条记录
    with DM.ADOQTEMP1 do
    begin
      close;
      SQL.Clear;
      SQL.Add('select prod_stock from prod where prod_id = :id');
      parameters.ParamByName('id').Value := in_prod_ids;
      if (not prepared) then
        prepared := true;
      try
        open;
      except
        ExecSQL;
      end;
      if (fieldbyname('prod_stock').Value - in_numbers < 0) then
      begin
        showmessage('操作错误,不能删除该进货信息!');
        exit;
      end;
    end;
    with DM.ADOQTEMP1 do
    begin
      close;
      with SQL do
      begin
        clear;
        add(str3);
      end;
      parameters.ParamByName('id').Value := DM.ADOQXPXX1.fieldbyname('in_id').Value;
      //parameters.ParamByName('time').Value := DM.ADOQXPXX1.fieldbyname('in_time').AsDateTime;
      if (not prepared) then
        prepared := true;
      try
        execSQL;
      except
        showmessage('软件发生错误,不能删除进货记录!');
        close;
        exit;
      end;
      DM.ADOQXPXX1.Close;
      DM.ADOQXPXX1.Open;
    end;
    //检验进货表中还有该编号的商品存在
    with DM.ADOQTEMP1 do
    begin
      close;
      with SQL do
      begin
        clear;
        add('select * from stock where in_prod_id LIKE :id');
        parameters.ParamByName('id').Value := in_prod_ids;
      end;
      if (not prepared) then
        prepared := true;
      active := true;
      //进货表己没有该编号的商品存在,从商品表中彻底删除该编号的商品
      if recordcount = 0 then
      begin
        close;
        if active then
          active := false;
        SQL.clear;
        SQL.add(str2);
        parameters.parambyname('id').value := in_prod_ids;
        try
          if (not prepared) then
          prepared := true;
          execSQL;
        except
          showmessage('软件发生错误,操作失败!请重新进行上次操作!');
          close;
          with DM.ADOQTEMP2 do
          begin
            close;
            SQL.Clear;
            SQL.Add(str5);
            parameters.ParamByName('opid').Value := auser.userid;
            parameters.ParamByName('ids').Value := in_ids;
            parameters.ParamByName('prod_ids').Value := in_prod_ids;
            parameters.ParamByName('prod_names').Value := in_prod_names;
            parameters.ParamByName('prices').Value := in_prices;
            parameters.ParamByName('numbers').Value := in_numbers;
            parameters.ParamByName('time').Value := in_times;
            if (not prepared) then
                prepared := true;
            try
              ExecSQL;
            except
              showmessage('发生严重错误,请把刚删除的数据再添加进去,否则会有严重后果');
            end;
          end;
          DM.ADOQXPXX1.close;
          DM.ADOQXPXX1.Open;
        end;
      end
      //进货表中还有该编号的商品,所以修改该商品的库存数量
      else
      with DM.ADOQTEMP1 do
      begin
        close;
        SQL.Clear;
        SQL.Add(str4);
        parameters.ParamByName('stock').Value := in_numbers;
        parameters.ParamByName('id').Value := in_prod_ids;
        if (not prepared) then
            prepared := true;
        try
          execSQL;
        except
          showmessage('软件发生错误!请重新进行一次上次操作!');
          close;
          with DM.ADOQTEMP2 do
          begin
            close;
            SQL.Clear;
            SQL.Add(str5);
            parameters.ParamByName('opid').Value := auser.userid;
            parameters.ParamByName('ids').Value := in_ids;
            parameters.ParamByName('prod_ids').Value := in_prod_ids;
            parameters.ParamByName('prod_names').Value := in_prod_names;
            parameters.ParamByName('prices').Value := in_prices;
            parameters.ParamByName('numbers').Value := in_numbers;
            parameters.ParamByName('time').Value := in_times;
            try
              if (not prepared) then
                prepared := true;
              ExecSQL;
            except
              showmessage('发生严重错误,请把刚删除的数据再添加进去!');
            end;
          end;
          DM.ADOQXPXX1.Refresh;
        end;
      end;
    end;

  end}
  else
    exit;
  DM.ADOQXPXX1.Close;
  DM.ADOQXPXX1.Open;
end;

procedure TFrmXiangPin.Button6Click(Sender: TObject);
begin
  //DateTimepicker1.DateTime := DM.ADOQXPXX1.fieldbyname('in_time').AsDateTime;
  Button1.Enabled := true;
  Button2.Enabled := true;
  ENA;
  sign := '1';
  Button6.Enabled := false;
  {with DM.ADOQXPXX1 do
  begin
    DBcombobox1.Text := fieldbyname('prod_sort').AsString;
    DBCombobox2.Text := fieldbyname('prod_unit').AsString;
    DBCombobox2.Text := fieldbyname('prod_name').AsString;
    DBEdit1.Text := fieldbyname('prod_price').AsString;
    DBEdit2.Text := fieldbyname('in_price').AsString ;
    DBEdit3.Text := fieldbyname('in_number').AsString ;
    DateTimePicker1.DateTime  := fieldbyname('in_time').AsDateTime;
  end;}


  {str3 := '';
  str3 := DM.ADOQXPXX1.fieldbyname('prod_name').AsString;
  str4 := 'UPDATE prod SET (prod_sort = :prod_sort1, prod_unit = :prod_unit1) where prod_name = ' + trim(DBCombobox3.Text);
  str5 := 'UPDATE stock SET (in_price = :in_price1, in_number = :in_number1) where in_prod_name = ' + trim(DBCombobox3.Text);
  with DM.ADOQTEMP1 do
  begin
    close;
    with SQL do
    begin
      clear;
      add(str4);
    end;
    try
      if (not prepared) then
        prepared := true;
      execSQL;
    except
      showmessage('发生程序错误,修改失败!');
      close;
    end;
  end;
  with DM.ADOQTEMP1 do
  begin
    close;
    with SQL do
    begin
      clear;
        add(str5);
      end;
      try
        if (not prepared) then
          prepared := true;
        execSQL;
      except
        showmessage('发生程序错误,修改失败!');
        close;
      end;
    end;}
end;

procedure TFrmXiangPin.DBGrid1DblClick(Sender: TObject);
begin
  {with DM.ADOQXPXX1 do
  begin
    DBcombobox1.Text := fieldbyname('prod_sort').AsString;
    DBCombobox2.Text := fieldbyname('prod_unit').AsString;
    DBCombobox2.Text := fieldbyname('prod_name').AsString;
    DBEdit1.Text := fieldbyname('prod_price').AsString;
    DBEdit2.Text := fieldbyname('in_price').AsString ;
    DBEdit3.Text := fieldbyname('in_number').AsString ;
    DateTimePicker1.Date := fieldbyname('in_time').AsDateTime;}
    //temp1 := DM.ADOQXPXX1.fieldbyname('in_number').AsInteger;//保存好原来的进货数量
    DBcombobox3.ReadOnly := true;
    //DateTimePicker1.Date := DM.ADOQXPXX1.fieldbyname('in_time').AsDateTime;
    sign := '1';
    ENA;
    Button1.Enabled := true;
    Button2.Enabled := true;
    Button6.Enabled := false;
    button4.Enabled := false;
    button5.Enabled := false;
  //end;
end;

procedure TFrmXiangPin.DBComboBox1DropDown(Sender: TObject);

⌨️ 快捷键说明

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