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

📄 unit_rubb_takecard.pas

📁 此代码为企业原料管理代码
💻 PAS
字号:
unit Unit_Rubb_TakeCard;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, StdCtrls, ExtCtrls, Buttons, Db, DBTables;

type
  TForm_Rubb_TakeCard = class(TForm)
    DBGrid1: TDBGrid;
    Edit_MixCardNum: TEdit;
    Edit_Rubb: TEdit;
    Edit_Per: TEdit;
    ComboBox1: TComboBox;
    BitBtn1: TBitBtn;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel_Hint: TPanel;
    Qry_TakeCard: TQuery;
    DS_TakeCard: TDataSource;
    Qry_exe: TQuery;
    BitBtn2: TBitBtn;
    Panel5: TPanel;
    Panel6: TPanel;
    BitBtn3: TBitBtn;
    Panel3: TPanel;
    ComboBox2: TComboBox;
    Edit1: TEdit;
    Panel4: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Edit_MixCardNumChange(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    b_state:integer;
  public
    { Public declarations }
  end;

var
  Form_Rubb_TakeCard: TForm_Rubb_TakeCard;

implementation

uses Unit_Rubb_PrtTakeCard;

{$R *.DFM}

procedure TForm_Rubb_TakeCard.Edit_MixCardNumChange(Sender: TObject);
begin

  with Qry_exe  do
  begin
    close;
    sql.clear;
    sql.add('select  * from 炼胶配方表 where 配方编号 = :v_MixCardNum ');
    parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
    open;
    Edit_rubb.text:= fieldbyname('制成品名称').asstring;
    if fieldbyname('百分比').asfloat = 0 then
    begin
      Panel_Hint.Font.Color:=clblue;
      Panel_Hint.Caption:='请输入每车重量:';
      b_state:=0;
    end
    else
    begin
      Panel_Hint.Font.Color:=clred;
      Panel_Hint.Caption:='请输入每车重量:';
      b_state:=1;
    end;
  end;//with


end;

procedure TForm_Rubb_TakeCard.BitBtn1Click(Sender: TObject);
var
 fTotalWeight:real;
begin
// 必须填写某些栏目
  if (Edit3.text = '') or (Edit_Rubb.text = '') then
  begin
    showmessage('请填写每车重量和车数 ');
    exit;
  end;//if

   fTotalWeight:=0;
   Edit_Per.text:=floattostr(strtofloat(Edit3.text)*strtofloat(Edit1.text));
  case b_state of //是百分比
  1:
  begin
    try
      strtofloat(Edit_Per.text);
    except
      showmessage('请填写数字!');
      exit;
    end;// try

    with Qry_TakeCard do
      begin
        close;
        sql.clear;
        sql.add(format('select 配方编号,制成品名称,材料名称,百分比/100*'+'"%s"'+' as 重量 from 炼胶配方表 where 配方编号 = :v_MixCardNum ',[Edit_Per.text]));
        parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
        open;
        first;
       while not eof do
      begin
        fTotalWeight:=fTotalWeight+ fieldbyname('重量').asfloat;
        next;
      end; //while
      Edit2.text:=floattostr(fTotalWeight);//求总重
      end; //with
    end;
  0:
  begin
      with Qry_exe do
    begin //求总份数
      close;
      sql.Clear;
      sql.Add('select sum(份数) as zofen from 炼胶配方表 where 配方编号 = :v_MixCardNum ');
      parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
      open;
      Edit_Per.text:=floattostr(strtofloat(Edit_Per.text)/fieldbyname('zofen').asfloat);
      Edit_Per.text:=formatfloat('0.000', strtofloat(Edit_Per.text));
    end; //with
    with Qry_TakeCard do
    begin
      close;
      sql.clear;
      sql.add(format('select 配方编号,制成品名称,材料名称,份数*'+'"%s"'+' as 重量 from 炼胶配方表 where 配方编号 = :v_MixCardNum ',[Edit_Per.text]) );
      parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
      open;
      first;
       while not eof do
      begin
        fTotalWeight:=fTotalWeight+ fieldbyname('重量').asfloat;
        next;
      end; //while
     Edit2.text:=floattostr(fTotalWeight);//求总重

    end; //with
  end;
  end; //case
end;

procedure TForm_Rubb_TakeCard.FormShow(Sender: TObject);
var
  sID,sCode:string;
  i:integer;
begin
  edit1.Text:='';
  edit2.Text:='';
  edit3.Text:='';
  with Qry_exe do
  begin
    close;
    sql.Clear;
    sql.Add('select distinct 配方编号, 制成品名称 from 炼胶配方表  ');
    open;
    first;
    ComboBox1.Items.Clear;
    ComboBox2.Items.Clear;
    while not eof do
    begin
      ComboBox1.Items.append(fieldbyname('配方编号').asstring+'  '+fieldbyname('制成品名称').asstring);
      ComboBox2.Items.append(fieldbyname('配方编号').asstring);
      next;
    end; //while
  end; //with

 // Edit_MixCardNum.Clear;
  Edit_Rubb.Clear;

  ComboBox2.ItemIndex:=0;
  i:=1;
  sID:=combobox2.text;
  if sID='' then
    begin
    showmessage('请先生成领料单!');
    exit;
  end;
  while sID[i] <> '' do
  begin
    sCode:=sCode+sID[i];
    i:=i+1;
  end; //while


  with qry_exe do
  begin
    close;
    sql.clear;
    sql.Add('select * from 炼胶配方表 where 配方编号 = :code ');
    parambyname('code').asinteger:=strtoint(sCode);
    open;

    Edit_MixCardNum.text:=inttostr(strtoint(sCode));
  end; //with


end;

procedure TForm_Rubb_TakeCard.ComboBox1Change(Sender: TObject);
var
  sID,sCode:string;
  i:integer;
begin

  i:=1;
  sID:=combobox1.text;
  while sID[i] <> ' ' do
  begin
    sCode:=sCode+sID[i];
    i:=i+1;
  end; //while


  with qry_exe do
  begin
    close;
    sql.clear;
    sql.Add('select * from 炼胶配方表 where 配方编号 = :code ');
    parambyname('code').asinteger:=strtoint(sCode);
    open;

    Edit_MixCardNum.text:=inttostr(strtoint(sCode));
  end; //with

//  Edit_MixCardNum.text:=ComboBox1.text;
  Form_Rubb_TakeCard.Edit_MixCardNumChange(Sender);
end;

procedure TForm_Rubb_TakeCard.BitBtn2Click(Sender: TObject);
begin
  if not Qry_TakeCard.Active then
  begin
    showmessage('请先生成领料单!');
    exit;
  end;

  Form_Rubb_PrtTakeCard.QuickRep1.Preview;
end;

procedure TForm_Rubb_TakeCard.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Qry_TakeCard.Active:=false;

end;

procedure TForm_Rubb_TakeCard.BitBtn3Click(Sender: TObject);
begin
  close;
end;

procedure TForm_Rubb_TakeCard.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   try
   if ((Key>57) and (Key<48)) or ((Key<96) and (Key>110)) then
  exit;
  if Key=190 then
  exit;
  except
  end;
 end;

procedure TForm_Rubb_TakeCard.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    key:=#0;
    perform(WM_NEXTDLGCTL,0,0);
  end; //if
end;

end.

⌨️ 快捷键说明

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