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

📄 outbom_log.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  adoqtmp2.Close;
  adoqtmp3.Close;

  //9.如果在领料表中没有对应的订单、裁床号、扎号、规格对应的数据,侧添加,否侧在虚拟表中显示
  adoquery1.First;
  ADOQoutbom_log.First;
  while not adoquery1.Eof do
  begin
    adoquery1.Edit;
    for i:=1 to adoqtmp.recordcount do//工序数
    begin
        adoquery1.FieldValues[ADOQoutbom_log.FieldValues['temp_key']]:=ADOQoutbom_log.FieldValues['empid'];
        ADOQoutbom_log.Next;
    end;
    adoquery1.Post;
    adoquery1.Next;
  end;  //while not adoquery1.Eof do
  RefeshMe:=true; //同步显示工序领料表与辅料表的对应关系
  adoquery1.First;
  //显示查找对应裁床号,扎号Form
end;

//得到字段值(real型的)
function TForm_Outbom_log.Getmoneyvalue(table,fin_field,fin_value,res_field:string):real;
begin
  with ADOQ_tmpser do
  begin
    close; SQL.Clear;
    SQL.Add('select '+res_field+' from '+table+' where '+fin_field+'=:fin_value');
    Parameters.ParamValues['fin_value']:=fin_value;
    ExecSQL;  Open;
    result:=FieldValues[res_field];
    close;
  end;
end;

//得到字段值(字符型的)
function TForm_Outbom_log.GetFieldvalue(table,fin_field,fin_value,res_field,res_value:string):string;
begin
  with ADOQ_tmpser do
  begin
    close; SQL.Clear;
    SQL.Add('select '+res_field+' from '+table+' where '+fin_field+'=:fin_value');
    Parameters.ParamValues['fin_value']:=fin_value;
    ExecSQL;  Open;
    result:=FieldValues[res_field];
    close;
  end;
end;

//得到字段值(boolean型的)
function TForm_Outbom_log.Getbooleanvalue(table,fin_field,fin_value,res_field:string):boolean;
begin
  result:=false;
  with ADOQ_tmpser do
  begin
    close; SQL.Clear;
    SQL.Add('select '+res_field+' from '+table+' where '+fin_field+'=:fin_value');
    Parameters.ParamValues['fin_value']:=fin_value;
    try
      ExecSQL;  Open;
    except
      exit;
    end;
    result:=FieldValues[res_field];
    close;
  end;
end;

procedure TForm_Outbom_log.FormShow(Sender: TObject);
begin
  RefeshMe:=false;
  //添加订单号
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select ord_id from order_msg order by order_date');
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'当前无订单信息,请先定义!');
        exit;
    end;
    first;
    while not eof do
    begin
        ComboBox1.Items.Add(fieldvalues['ord_id']);
        next;
    end;
  end;
  ComboBox1.ItemIndex :=ReadIniFIle(WsInteger,'LISTBOX','FL');
  Add_outbom;
  //显示员工信息表
  with ADOQemp do
  begin
      close;sql.clear;
      sql.add('select * from employee where state=1 and grade=''计件制''');
      open;
  end;
  if not ADOQuery3.Active then ADOQuery3.Open;
end;

procedure TForm_Outbom_log.ReturnBtnClick(Sender: TObject);
var tmpkey:string;
begin    
    RefeshMe:=false;
    if ADOQuery2.RecordCount = 0 then exit;
    if ADOQuery2.FieldValues['empid'] = null  then exit;
    if ADOQuery2.FieldValues['flag'] then
    begin
      msgerr(handle,'该工序已验收返料,不可退料!');
      abort; exit;
    end;
    //如果该人员已领取辅料则提示是否退料
    if adoquery2.FieldValues['flflag'] then
    begin
      if MsgQst(handle,'员工  ['+ADOQemp.fieldvalues['empname']+']  的辅料已领取,还要退回吗?') =IDNO then  exit;
    end
    else
    if MsgQst(handle,'确定将['+ADOQemp.fieldvalues['empname']+']的领料['+ADOQuery2.fieldvalues['seq_name']+']退回吗'+'?') =IDNO then  exit;
    try
        tmpkey:=ADOQuery2.FieldValues['temp_key'];
        ADOQuery2.Edit;
        ADOQuery2.FieldValues['empid']:=NULL;
        ADOQuery2.FieldValues['flflag']:=false;
        ADOQuery2.FieldValues['outdate']:=null;
        ADOQuery2.Post;

        ADOQuery1.Edit;
        ADOQuery1.FieldValues[tmpkey]:=NULL;
        ADOQuery1.Post;
    except
        MsgErr(handle,'退料失败!');
    end;
end;

procedure TForm_Outbom_log.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=Cafree;
end;

procedure TForm_Outbom_log.ComboBox1Change(Sender: TObject);
begin
  ComboBox1.Text:=trim(ComboBox1.Text);
  edit1.Clear; edit2.Clear; edit3.Clear;
end;

procedure TForm_Outbom_log.DBGrid2DblClick(Sender: TObject);
var
tmpkey:string;
empid:integer;
tmpdatetime:Tdatetime;
begin
  if not adoquery2.Active then exit;
  if adoquery2.RecordCount=0 then exit;
  if ADOQuery2.FieldValues['empid']<>null then
  begin
    Msgok(handle,'该工序已发料,请先退料再重新发料!');
    exit;
  end;
  if MsgQst(handle,'确定 ['+ADOQemp.FieldValues['empname']+'] 领取 ['+ADOQuery2.FieldValues['seq_name']+'] 工序吗?')=idno then exit;
  RefeshMe:=false;
  tmpkey:=ADOQuery2.FieldValues['temp_key'];
  empid:=ADOQemp.FieldValues['empid'];
  ADOQuery2.Edit;
  ADOQuery2.FieldValues['empid']:=empid;
  GetHostDateTime(datamod.ADOCon,tmpdatetime);
  ADOQuery2.FieldValues['outdate']:=tmpdatetime;
  if ADOQuery2.FieldValues['fl_flag'] then
  ADOQuery2.FieldValues['flflag']:=true;
  ADOQuery2.Post;
  ADOQuery1.Edit;
  ADOQuery1.FieldValues[tmpkey]:=empid;
  ADOQuery1.Post;
end;

procedure TForm_Outbom_log.DataSourceDataChange(Sender: TObject;
  Field: TField);
//  var str1, str2, str3, str4:string;
begin
  if not (Sender as TDataSource).DataSet.Active  then
  begin
   ADOQuery2.Close;
   exit;
  end;
  if (Sender as TDataSource).DataSet.RecordCount =0 then
  begin
   ADOQuery2.Close;
   exit;
  end;
  if RefeshMe then
  with adoquery2 do
  begin
        close;sql.clear;
        sql.add('select * from outbom_log where ord_id=:v_ord_id and  bed_id=:v_bed_id and zh_id=:v_zh_id and size_name=:v_size_name');
        sql.Add('order by bed_id,zh_id,temp_key');
{        str1:=adoquery1.FieldValues['ord_id'];
        str2:=inttostr(adoquery1.FieldValues['bed_id']);
        str3:=inttostr(adoquery1.FieldValues['zh_id']);
        str4:=adoquery1.FieldValues['size_name'];        }

        parameters.ParamValues['v_ord_id']:=adoquery1.FieldValues['ord_id'];
        parameters.ParamValues['v_bed_id']:=adoquery1.FieldValues['bed_id'];
        parameters.ParamValues['v_zh_id']:=adoquery1.FieldValues['zh_id'];
        parameters.ParamValues['v_size_name']:=adoquery1.FieldValues['size_name'];
        open;
  end;
end;

procedure TForm_Outbom_log.DataSource2DataChange(Sender: TObject;
  Field: TField);
begin
  if not adoquery2.Active then exit;
  if adoquery2.RecordCount=0 then exit;

  //显示对应辅料信息
  with adoqmat do
  begin
      close;sql.Clear;
      sql.Add('select mat_name, absent_bom.num*outbom_log.ccnum as num ,unit,material.mat_id from [absent_bom],material,outbom_log');
      sql.add('where absent_bom.mat_id=material.mat_id and absent_bom.ord_id=:v_ord_id and ');
      sql.add('absent_bom.temp_key=:v_temp_key and outbom_log.size_name=:v_sizename');
      sql.add('and outbom_log.bed_id=:v_bed_id and outbom_log.zh_id=:v_zh_id');
      sql.add('and outbom_log.ord_id=absent_bom.ord_id and outbom_log.temp_key=absent_bom.temp_key');
      sql.add('order by material.mat_id');
      parameters.ParamValues['v_ord_id']:=adoquery1.FieldValues['ord_id'];
      parameters.ParamValues['v_temp_key']:=adoquery2.FieldValues['temp_key'];
      parameters.ParamValues['v_sizename']:=adoquery1.FieldValues['size_name'];
      parameters.ParamValues['v_bed_id']:=adoquery1.FieldValues['bed_id'];
      parameters.ParamValues['v_zh_id']:=adoquery1.FieldValues['zh_id'];
      open;
      BitBtn2.Enabled:=recordcount>0;
  end;

  returnbtn.Enabled:= not adoquery2.FieldValues['qbfl_flag'];
  if adoquery2.FieldValues['empid']<>null then
  BitBtn1.Enabled:= not adoquery2.FieldValues['flag']
  else BitBtn1.Enabled:=false;
  if adoqmat.RecordCount >0 then BitBtn2.Enabled:= not adoquery2.FieldValues['flflag']
  else BitBtn2.Enabled:=false;
//  BitBtn2.Enabled:=not adoquery2.FieldValues['flag'];
  try
    if adoquery2.FieldValues['empid'] <> null then  
    if adoqemp.Active then
    adoqemp.Locate('empid',adoquery2.FieldValues['empid'],[loCaseInsensitive]);
  except
  end;  
end;

procedure TForm_Outbom_log.BitBtn1Click(Sender: TObject);
var tmpdatetime:Tdatetime;
    fl_flag:boolean;
begin
  RefeshMe:=false;
  if not adoquery2.Active then exit;
  if adoquery2.RecordCount =0 then exit;
  if adoquery2.FieldValues['empid']=null then
  begin
      MsgErr(handle,'当前料未领取!');
      exit;
  end;
  if adoquery2.FieldValues['qbfl_flag'] then
  begin
    Msgok(handle,'该工序已全部验收返料!');
    abort; exit;
  end;
  //得到当前是否已有返料标记
  if ADOQemp.FieldValues['empid']<>adoquery2.FieldValues['empid']
  then adoqemp.Locate('empid',adoquery2.FieldValues['empid'],[]);
  
  //将发料时的该扎的数量赋值
  if ADOQmat.RecordCount<1 then fl_flag:=true
  else fl_flag:=adoquery2.FieldValues['flflag'];
  if not fl_flag then
  begin
    Msgerr(handle,'警告:该工序还有辅料未领取,不可验收!');
    abort; exit;
  end;
  cc_number:=adoquery2.FieldValues['ccnum'];
  OldNS_number:=adoquery2.FieldValues['num'];
  tmpempid:=ADOQuery2.FieldValues['empid'];
  tmpempname:=adoqemp.FieldValues['empname'];
  seq_name:=ADOQuery2.FieldValues['seq_name'];
  //显示该工序员工的收料数量信息
  Form_Outbom_Query:=TForm_Outbom_Query.Create(application);
  if Form_Outbom_Query.ShowModal=mrok then
  begin
    if NowNs_number<=0 then
    begin
      msgErr(handle, '请输入正确的验收数量!');
      exit;
    end;
    adoquery2.Edit;
    if OldNS_number+NowNs_number=cc_number then
    adoquery2.FieldValues['qbfl_flag']:=true;
    adoquery2.FieldValues['num']:=OldNS_number+NowNs_number;
    adoquery2.FieldValues['flag']:=true;
    GetHostDateTime(datamod.ADOCon,tmpdatetime);
    adoquery2.FieldValues['retdate']:=tmpdatetime;
    adoquery2.post;
  end;
end;

procedure TForm_Outbom_log.BitBtn2Click(Sender: TObject);
var
emp_name, mat_id, mat_name, tmp_unit,
tmp_event, info: string;
ck_num, kc_num, price, total_money: real;
emp_id, tmp_id: integer;  //edit_kc_ret_1
bool_flag, WLCK_flag:boolean;
begin
  RefeshMe:=false;
  if not adoquery2.Active then exit;
  if not ADOQmat.Active then exit;
  if adoquery2.RecordCount =0 then exit;
  if ADOQmat.RecordCount=0 then exit;
  if adoquery2.FieldValues['empid']=null then
  begin
      MsgErr(handle,'当前主料未领取,不能先领辅料!');
      exit;
  end;
  if adoquery2.FieldValues['flflag']then
  begin
    MsgOK(handle,'当前工序辅料已领取');
    exit;
  end;
  
  //得到当前待领辅料人员ID及姓名
  emp_ID:=ADOQuery2.FieldValues['empid'];
  emp_name:=GetFieldvalue('employee','empid',inttostr(emp_id),'empname','');

⌨️ 快捷键说明

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