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

📄 unit_rubb_qryproccard.~pas

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

interface

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

type
  TForm_Rubb_QryProcCard = class(TForm)
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    BitBtn2: TBitBtn;
    Qry_QryProcCard: TQuery;
    DS_QryProcCard: TDataSource;
    PageControl1: TPageControl;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    DateTimePicker_from: TDateTimePicker;
    DateTimePicker_to: TDateTimePicker;
    RadioGroup1: TRadioGroup;
    Edit_IgdCode: TEdit;
    Edit_Source: TEdit;
    Edit_Bat: TEdit;
    BitBtn1: TBitBtn;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    BitBtn5: TBitBtn;
    Panel5: TPanel;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Qry_Exe: TQuery;
    Query3: TQuery;
    Query2: TQuery;
    Table1: TTable;
    procedure BitBtn1Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Qry_QryProcCardAfterScroll(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    
  private
    { Private declarations }
  public
    { Public declarations }
    procedure zdyQueryScroll();
  end;

var
  Form_Rubb_QryProcCard: TForm_Rubb_QryProcCard;
  sp:integer;
implementation

uses Unit_Rubb_ProcCard,  Unit_Rubb_Main, UnitDM;

{$R *.DFM}

procedure TForm_Rubb_QryProcCard.zdyQueryScroll();
begin

  Form_Rubb_Main.StatusBar1.Panels[1].Text:=format('共找到 %d 张工艺卡, 您现在浏览的是第 %d 张。',[Qry_QryProcCard.recordcount, Qry_QryProcCard.recno]);

  with form_rubb_main.Qry_MaterCard do
  begin
    close;
    sql.Clear;
    sql.Add('select * from 炼胶用料单 where 主表标识号 = :v_mid ');
    parambyname('v_mid').asinteger:=Qry_QryProcCard.fieldbyname('标识号').asinteger;
    open;
//    if recordcount = 0 then
//      form_rubb_main.Qry_MaterCard.close;

  end; //with



end;


procedure TForm_Rubb_QryProcCard.BitBtn1Click(Sender: TObject);
var
  Mod_date:Tdate;
begin
  Mod_date:=DateTimePicker_From.date;
  Mod_date:=Mod_date-1;

  if DateTimePicker_from.date > DateTimePicker_to.date then
  begin
    showmessage('开始日期大于结束日期!'+#13+#13+'请重新输入!');
    exit;
  end; //if

  with Qry_QryProcCard do
  begin
    close;
    sql.Clear;
    sql.Add('select * from 炼胶工艺卡 ');
    sql.Add('where 混炼日期 between :v_from and :v_to order by 编号 ');
    parambyname('v_from').asdatetime:=Mod_date;
    parambyname('v_to').asdatetime:=DateTimePicker_to.date;
    open;
    if recordcount = 0 then
      showmessage('没有找到符合条件的工艺卡!');
  end; //with

//激活从表
  Form_Rubb_Main.Tab_RepCard.open;

end;

procedure TForm_Rubb_QryProcCard.RadioGroup1Click(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
  0:
    begin
      Edit_IgdCode.Enabled:=true;
      Edit_Source.Enabled:=false;
      Edit_Bat.Enabled:=false;
      Edit_IgdCode.Color:=clwindow;
      Edit_Source.Color:=clbtnface;
      Edit_Bat.Color:=clbtnface;
      Edit_Source.Text:='';
      Edit_Bat.Text:='';

    end;
    1:
    begin
      Edit_IgdCode.Enabled:=false;
      Edit_Source.Enabled:=true;
      Edit_Bat.Enabled:=false;
      Edit_IgdCode.Color:=clbtnface;
      Edit_Source.Color:=clwindow;
      Edit_Bat.Color:=clbtnface;
      Edit_IgdCode.Text:='';
      Edit_Bat.Text:='';
    end;
    2:
    begin
      Edit_IgdCode.Enabled:=false;
      Edit_Source.Enabled:=false;
      Edit_Bat.Enabled:=true;
      Edit_IgdCode.Color:=clbtnface;
      Edit_Source.Color:=clbtnface;
      Edit_Bat.Color:=clwindow;
      Edit_IgdCode.Text:='';
      Edit_Source.Text:='';
    end;
  end;  //case

end;

procedure TForm_Rubb_QryProcCard.BitBtn5Click(Sender: TObject);
begin
  with Qry_QryProcCard do
  begin
  close;
  sql.Clear;
    case RadioGroup1.ItemIndex of
      0:
      begin
        sql.Add('select * from 炼胶工艺卡 where 配方编号 = :v_IgdCode ');
        parambyname('v_IgdCode').asstring:=Edit_IgdCode.text;
      end;
      1:
      begin
        sql.Add('select * from 炼胶工艺卡 where 货源号 = :v_Source ');
        parambyname('v_Source').asstring:=Edit_Source.text;
      end;
      2:
      begin
        sql.Add('select * from 炼胶工艺卡 where 生产批号 = :v_bat ');
        parambyname('v_bat').asstring:=Edit_Bat.text;
      end;
    end; //case
    open;
    if recordcount = 0 then
      showmessage('没有找到符合条件的工艺卡!');
  end; //with

//激活从表
  Form_Rubb_Main.Tab_RepCard.open;

end;

procedure TForm_Rubb_QryProcCard.BitBtn2Click(Sender: TObject);
begin
    Form_Rubb_QryProcCard.close;

    Form_Rubb_Main.If_ShowPic:=false;
    Form_Rubb_Main.Panel1.Visible:=true;
    Form_Rubb_Main.PageControl1.Visible:=true;
    Form_Rubb_Main.Panel104.Visible:=true;
    Form_Rubb_Main.DBNavigator1.Visible:=true;
    Form_Rubb_Main.BitBtn1.Visible:=true;
    Form_Rubb_Main.Index:=DBGrid1.Fields[0].asinteger;
    Form_Rubb_Main.Index1:=DBGrid1.Fields[1].asinteger;
    Form_Rubb_Main.Tab_RepCard.Open;

end;

procedure TForm_Rubb_QryProcCard.Qry_QryProcCardAfterScroll(
  DataSet: TDataSet);
begin
  zdyQueryScroll;
end;

procedure TForm_Rubb_QryProcCard.FormCreate(Sender: TObject);
begin
  sp:=0;
  DateTimePicker_From.date:=date - 30;
  DateTimePicker_To.date:=date;
end;

procedure TForm_Rubb_QryProcCard.BitBtn4Click(Sender: TObject);
var
  n_id:integer;
  s_mater, s_OutCardNum :string;
  f_per:real;
begin
   if not Form_Rubb_QryProcCard.Qry_QryProcCard.Active then
  begin
    showmessage('请先查询并调出工艺卡!');
    exit;
  end; // if

   if sp=0 then
  begin
    showmessage('请选择要删除的工艺卡!');
    exit;
  end; // if

  if messagedlg('确要删除当前的工艺卡及相关的报告单和用料单吗?',mtwarning,[mbyes,mbno],0) = mrno then
    exit;

  if messagedlg('是否同时要从原材料仓库中删除'+#13+#13'该工艺卡对应的出库记录?',mtWarning,[mbYes,mbNo],0) = mrYes then
    begin
     with Query2 do
  begin
    close;
    sql.Clear;
    sql.add('select * from 炼胶用料单 where 主表标识号 = :v_id');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    open;
     if recordcount=0 then
     begin
     //showmessage('无记录可删除!');
      with Qry_Exe do
  begin
    close;
    sql.Clear;
    sql.Add('delete from 炼胶工艺卡 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;

    close;
    sql.Clear;
    sql.Add('delete from 炼胶用料单 where 主表标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;

    close;
    sql.Clear;
    sql.Add('delete from 炼胶指标报告单 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;
  end; //with
  with table1 do
    begin
    open;
    first;
    while not eof do
    begin
    if fieldbyname('编号').asinteger>sp then
    begin
    edit;
    fieldbyname('编号').asinteger:=fieldbyname('编号').asinteger-1;
    post;
    sp:=sp+1;
    end;
    next;
    end;
    end;
  sp:=0;
  table1.Close;
  Form_Rubb_QryProcCard.Qry_QryProcCard.close;
  Form_Rubb_Main.Qry_MaterCard.close;

  showmessage('已删除当前工艺卡!');
     exit;
     end;
     //判断日期是否小于等于结账日期
  if fieldbyname('riqi').asdatetime <=dm.zdyGetmaterCheckDate then //d_LimDate then
  begin
    showmessage('不允许删除结账日期之前的记录!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetmaterCheckDate));
    perform(WM_NEXTDLGCTL,0,0);
    exit;
  end;
     first;
    while not eof do
    begin

     Query3.close;
     Query3.sql.Clear;
    Query3.sql.add('select * from 原材料台帐 where 日期 = :vd and 出库数量=:nu and 单价=:v_Per and 领料单号=:v_out and 材料名称=:v_mater');
    Query3.parambyname('vd').asdatetime:=Query2.fieldbyname('riqi').asdatetime;
    Query3.parambyname('v_mater').asstring:=Query2.fieldbyname('材料名称').asstring;
    Query3.parambyname('v_Out').asstring:=Query2.fieldbyname('领料单号').asstring;
    Query3.parambyname('nu').asfloat:=Query2.fieldbyname('用料数量').asfloat;
    Query3.parambyname('v_Per').asfloat:=Query2.fieldbyname('单价').asfloat;
    Query3.open;
   // showmessage(Query3.fieldbyname('材料名称').asstring);
//为刷新表格记录数据
  s_mater:=Query3.fieldbyname('材料名称').asstring;
  s_OutCardNum:=Query3.fieldbyname('领料单号').asstring;
  f_per:=Query3.fieldbyname('单价').asfloat;
 // showmessage(datetostr(Query2.fieldbyname('riqi').asdatetime));

//修改该记录日期以后的相关记录库存
  with Qry_exe do
  begin
    close;
    sql.Clear;
    sql.Add('update 原材料台帐 set 库存 = (库存*1000 + :v_Rewt)/1000 ');
    sql.Add('where 库存 < :v_stock and 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_Per ');
    parambyname('v_stock').asfloat:=Query3.fieldbyname('库存').asfloat;
    parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
    parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
    parambyname('v_Rewt').asfloat:=Query3.fieldbyname('出库数量').asfloat*1000;
    parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
    execsql;
  end; //with

//修改相关入库记录  剩余库存
  with Qry_exe do
  begin
    close;
    sql.Clear;
    sql.Add('update 原材料台帐 set 剩余库存 = (剩余库存*1000 + :v_Rewt)/1000 ');
    sql.Add('where 出入标识 = :v_IfOut and 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_Per');
    parambyname('v_Rewt').asfloat:=Query3.fieldbyname('出库数量').asfloat*1000;
    parambyname('v_IfOut').asboolean:=false;
    parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
    parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
    parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
    execsql;
  end; //with

//删除该记录
  with Qry_exe do
  begin
    close;
    sql.Clear;
    sql.Add('delete from 原材料台帐 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Query3.fieldbyname('标识号').asinteger;
    execsql;
  end; //with



//修改最后领料标识的位置 先全部False 在最后一个True
  with Qry_exe do
  begin
    close;
    sql.Clear;
    sql.Add('update 原材料台帐 set 最后领料标识 = :v_LastOutCardFlag');
    sql.Add('where 材料名称 = :v_mater and  领料单号 = :v_outCardNum  and 单价 = :v_per  ');
    parambyname('v_LastOutCardFlag').asboolean:=false;
    parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
    parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
    parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
    execsql;

    close;
    sql.Clear;
    sql.Add('select * from 原材料台帐 ');
    sql.Add('where 材料名称 = :v_mater and  领料单号 = :v_outCardNum  and 单价 = :v_per  ');
    sql.Add('order by 库存  ');
    parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
    parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
    parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
    open;
    n_id:=fieldbyname('标识号').asinteger;

    close;
    sql.Clear;
    sql.Add('update 原材料台帐 set 最后领料标识 = :v_LastOutCardFlag ');
    sql.Add('where  标识号 = :v_id');
    parambyname('v_LastOutCardFlag').asboolean:=true;
    parambyname('v_id').asinteger:=n_id;
    execsql;
  end; //with
      next;
    end;
    end;
    end;

  with Qry_Exe do
  begin
    close;
    sql.Clear;
    sql.Add('delete from 炼胶工艺卡 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;

    close;
    sql.Clear;
    sql.Add('delete from 炼胶用料单 where 主表标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;

    close;
    sql.Clear;
    sql.Add('delete from 炼胶指标报告单 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;
  end; //with
     with table1 do
    begin
    open;
    first;
    while not eof do
    begin
    if fieldbyname('编号').asinteger>sp then
    begin
    edit;
    fieldbyname('编号').asinteger:=fieldbyname('编号').asinteger-1;
    post;
    sp:=sp+1;
    end;
    next;
    end;
    end;
  sp:=0;
  table1.Close;

  Form_Rubb_QryProcCard.Qry_QryProcCard.close;
  Form_Rubb_Main.Qry_MaterCard.close;

  showmessage('已删除当前工艺卡!');

{
  if not Form_Rubb_QryProcCard.Qry_QryProcCard.Active then
  begin
    showmessage('请先查询并调出工艺卡!');
    exit;
  end; // if

  if messagedlg('要删除当前的工艺卡 以及 相关的报告单 和 用料单!',mtwarning,[mbyes,mbno],0) = mrno then
    exit;

  with Qry_Exe do
  begin
    close;
    sql.Clear;
    sql.Add('delete from 炼胶工艺卡 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;

    close;
    sql.Clear;
    sql.Add('delete from 炼胶用料单 where 主表标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;

    close;
    sql.Clear;
    sql.Add('delete from 炼胶指标报告单 where 标识号 = :v_id ');
    parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
    execsql;
  end; //with

  Form_Rubb_QryProcCard.Qry_QryProcCard.close;
  Form_Rubb_QryProcCard.Qry_QryProcCard.open;

  form_rubb_main.Qry_MaterCard.close;

  showmessage('已删除当前工艺卡!');
}

end;





procedure TForm_Rubb_QryProcCard.DBGrid1CellClick(Column: TColumn);
begin
  sp:=Qry_QryProcCard.fieldbyname('编号').asinteger;
end;

end.

⌨️ 快捷键说明

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