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

📄 outbom_log.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls,
  ComCtrls, RpDefine, RpCon, RpConDS, Menus, Mask, DBCtrls;

type
  TForm_Outbom_log = class(TForm)
    DataSource: TDataSource;
    DBGrid: TDBGrid;
    ADOQuery1: TADOQuery;
    ADOQtmp: TADOQuery;
    Panel1: TPanel;
    Label1: TLabel;
    Label7: TLabel;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Label8: TLabel;
    Edit2: TEdit;
    Label9: TLabel;
    Edit3: TEdit;
    ADOQtmp2: TADOQuery;
    Panel2: TPanel;
    ReturnBtn: TBitBtn;
    ExtBtn: TBitBtn;
    ADOQtmp3: TADOQuery;
    Label10: TLabel;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    Label11: TLabel;
    ExportBtn: TBitBtn;
    ADOQemp: TADOQuery;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOQuery2: TADOQuery;
    ADOQuery2log_id: TAutoIncField;
    ADOQuery2ord_id: TStringField;
    ADOQuery2bed_id: TIntegerField;
    ADOQuery2zh_id: TIntegerField;
    ADOQuery2size_name: TStringField;
    ADOQuery2color: TStringField;
    ADOQuery2num: TIntegerField;
    ADOQuery2empid: TIntegerField;
    ADOQuery2temp_key: TStringField;
    ADOQuery2outdate: TDateTimeField;
    ADOQuery3: TADOQuery;
    ADOQuery3temp_key: TStringField;
    ADOQuery3ord_id: TStringField;
    ADOQuery3seq_id: TStringField;
    ADOQuery3seq_name: TStringField;
    ADOQuery3seq_price: TBCDField;
    ADOQuery2gxname: TStringField;
    ADOQuery2flag: TBooleanField;
    BitBtn1: TBitBtn;
    ADOQuery2retdate: TDateTimeField;
    BitBtn2: TBitBtn;
    ADOQuery2flflag: TBooleanField;
    Label2: TLabel;
    DBGrid3: TDBGrid;
    DataSource3: TDataSource;
    ADOQmat: TADOQuery;
    Edit4: TEdit;
    Label3: TLabel;
    SerBtn: TBitBtn;
    ADOQoutbom_log: TADOQuery;
    ADOQ_tmp: TADOQuery;
    ADOQ_tmpser: TADOQuery;
    ADOQuery2qbfl_flag: TBooleanField;
    ADOQuery2ccnum: TIntegerField;
    Btnlocate: TBitBtn;
    Label4: TLabel;
    edt_ccNo: TEdit;
    Label5: TLabel;
    edt_zhNO: TEdit;
    Bevel1: TBevel;
    Label6: TLabel;
    ComboBox_size: TComboBox;
    ADOQuery2fl_flag: TBooleanField;
    procedure FormShow(Sender: TObject);
    procedure ReturnBtnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComboBox1Change(Sender: TObject);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure DataSource2DataChange(Sender: TObject; Field: TField);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure DBGridEnter(Sender: TObject);
    procedure SerBtnClick(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure ExportBtnClick(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure BtnlocateClick(Sender: TObject);
    procedure edt_zhNOKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    //第一次登陆窗口则自动加载工序发料信息标志
    //Sys_flag:boolean;
    function GetFieldvalue(table,fin_field,fin_value,res_field,res_value:string):string;
    function Getmoneyvalue(table,fin_field,fin_value,res_field:string):real;
    function Getbooleanvalue(table,fin_field,fin_value,res_field:string):boolean;
    procedure Add_outbom;
  public
    { Public declarations }
    tmpempid, cc_number, OldNS_number, NowNS_number:integer;
    tmpempname, seq_name:string;
  end;

var
  Form_Outbom_log: TForm_Outbom_log;
  RefeshMe:boolean;

implementation
uses data,sharevar,sharefun, Main, Outbom_Query;
{$R *.dfm}

procedure TForm_Outbom_log.Add_outbom;
var tmpstr:string;i:integer;
begin
  RefeshMe:=false;
  ComboBox1.Text:=trim(ComboBox1.Text);
  if combobox1.Text='' then exit;
  //关闭现有的数据表
  ADOQmat.Close;
  ADOQuery2.Close;
  adoquery1.Close;
  edit1.Clear; edit2.Clear; edit3.Clear;

  //1.显示订单相关信息
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select costume_name,cust_name,clo_name from order_msg,customer,clothing where order_msg.cust_id=customer.cust_id and');
    sql.add(' order_msg.clo_id=clothing.clo_id and ord_id=:v_ord_id');
    Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'当前不存在该订单批号,请重新选择!');
        exit;
    end;
    edit1.Text:=fieldvalues['cust_name'];
    edit2.Text:=fieldvalues['costume_name'];
    edit3.Text:=fieldvalues['clo_name'];
  end;

  //2.取裁床信息
  with ADOQtmp3 do
  begin
    close;sql.clear;
    sql.Add('select * from caicangdan where ord_id =:v_ord_id order by ord_id asc ,bed_id asc,zh_id asc,size_name asc');
    Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
    try
        open;
    except
        MsgErr(handle,'打开数据库表失败[caicangdan]!');
        exit;
    end;
    if recordcount =0 then
    begin
        MsgErr(handle,'该订单无裁床信息,请先添加!');
        exit;
    end;
    first;
  end;
  //添加订单信息到INI文件
  WriteIniFIle(WsInteger,'LISTBOX','FL',ComboBox1.ItemIndex);

  //3.将裁床与对应工序的乘积结果保存到表outbom_log中
  with ADOQtmp2 do
  begin
    close;sql.Clear;
    sql.add('select * from v_all_outbom_log where ord_id=:v_ord_id order by ord_id asc ,bed_id asc,zh_id asc,size_name asc');
    parameters.ParamValues['v_ord_id']:=combobox1.Text;
    open;
    first;
  end;

  //4.打开表outbom_kog中指定ord_id的数据
  with ADOQoutbom_log do
  begin
    close;sql.Clear;
    sql.add('select * from v_outbom_log where ord_id=:v_ord_id order by ord_id asc ,bed_id asc,zh_id asc,size_name asc');
    parameters.ParamValues['v_ord_id']:=combobox1.Text;
    open;
  end;
  
  while not ADOQtmp2.Eof do
  begin
    //如果表outbom_log中不存在裁床表中某个工序时,侧添加
    if not ADOQoutbom_log.Locate('id',ADOQtmp2.FieldValues['id'],[loCaseInsensitive]) then
    begin
        ADOQoutbom_log.Append;
        ADOQoutbom_log.FieldValues['ord_id']:=combobox1.Text;
        ADOQoutbom_log.FieldValues['bed_id']:=ADOQtmp2.FieldValues['bed_id'];
        ADOQoutbom_log.FieldValues['zh_id']:=ADOQtmp2.FieldValues['zh_id'];
        ADOQoutbom_log.FieldValues['size_name']:=ADOQtmp2.FieldValues['size_name'];
        ADOQoutbom_log.FieldValues['color']:=ADOQtmp2.FieldValues['color'];
        ADOQoutbom_log.FieldValues['ccnum']:=ADOQtmp2.FieldValues['num'];
        ADOQoutbom_log.FieldValues['empid']:=NULL;
        ADOQoutbom_log.FieldValues['temp_key']:=ADOQtmp2.FieldValues['temp_key'];
        ADOQoutbom_log.Post;
    end;
    ADOQtmp2.next;
  end;

  //5.找出当前订单批号对应的工序明细
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.Add('select * from sequence_price where ord_id=:v_ord_id  order by temp_key');
    parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
    open;
    if recordcount=0 then
    begin
        MsgErr(handle,'当前订单批号没有设定工序,请在工序管理进行编辑!');
        close;exit;
    end;
    first;
  end;  

  //6.生成相关的虚批表
  with ADOQtmp2 do
  begin
      close;sql.clear;
      sql.Add('drop table #tmptable');
      try
        execsql;
      except
      end;
      sql.Clear;
      tmpstr:='';
	    tmpstr:=tmpstr+'create table #tmptable([log_id] [int] IDENTITY (1, 1) NOT NULL,';
      tmpstr:=tmpstr+'[ord_id] [varchar] (10) NOT NULL,';
	    tmpstr:=tmpstr+'[bed_id] [int] NOT NULL ,';
	    tmpstr:=tmpstr+'[zh_id] [int] NOT NULL ,';
	    tmpstr:=tmpstr+'[size_name] [varchar] (8) NOT NULL ,';
	    tmpstr:=tmpstr+'[color] [varchar] (10) NOT NULL ,';
	    tmpstr:=tmpstr+'[ccnum] [int] NOT NULL,';
      for i:=1 to ADOQtmp.recordcount-1 do
      begin
          tmpstr:=tmpstr+'['+ADOQtmp.FieldValues['temp_key']+'] varchar(14),';
          ADOQtmp.next;
      end;
      tmpstr:=tmpstr+'['+ADOQtmp.FieldValues['temp_key']+'] varchar(14))';
      sql.add(tmpstr);
      try
        execsql;
      except
        MsgErr(handle,'建立临时统计表失败!');
        ADOQtmp2.close;
        exit;
      end;
  end;
  
  //7.将当前裁床信息插入临时表内
  ADOQtmp3.First;
  with ADOQtmp2 do
  begin
      while not ADOQtmp3.Eof do
      begin
        close;sql.clear;
        sql.add('insert into #tmptable(ord_id,bed_id,zh_id,size_name,color,ccnum) values(:ord_id,:bed_id,:zh_id,:size_name,:color,:ccnum)');
        parameters.ParamValues['ord_id']:=ComboBox1.Text;
        parameters.ParamValues['bed_id']:=ADOQtmp3.FieldValues['bed_id'];
        parameters.ParamValues['zh_id']:=ADOQtmp3.FieldValues['zh_id'];
        parameters.ParamValues['size_name']:=ADOQtmp3.FieldValues['size_name'];
        parameters.ParamValues['color']:=ADOQtmp3.FieldValues['color'];
        parameters.ParamValues['ccnum']:=ADOQtmp3.FieldValues['num'];
        try
          execsql;
        except
        end;
        ADOQtmp3.next;
      end;
  end;

  //8.更改临时表字段标题
  with adoquery1 do
  begin
      close;sql.clear;
      sql.add('select * from #tmptable order by bed_id,zh_id');
      open;
      Fields.FieldByName('log_id').DisplayLabel :='流水号';
      Fields.FieldByName('log_id').ReadOnly:=true;
      dbgrid.Columns.Items[0].Width:=50;
      Fields.FieldByName('ord_id').DisplayLabel :='订单批号';
      Fields.FieldByName('ord_id').ReadOnly:=true;
      dbgrid.Columns.Items[1].Width:=80;
      Fields.FieldByName('bed_id').DisplayLabel:='裁床号';
      Fields.FieldByName('bed_id').ReadOnly:=true;
      dbgrid.Columns.Items[2].Width:=50;
      Fields.FieldByName('zh_id').DisplayLabel:='扎号';
      Fields.FieldByName('zh_id').ReadOnly:=true;
      dbgrid.Columns.Items[3].Width:=40;
      Fields.FieldByName('size_name').DisplayLabel:='规格';
      Fields.FieldByName('size_name').ReadOnly:=true;
      dbgrid.Columns.Items[4].Width:=60;
      Fields.FieldByName('color').DisplayLabel:='颜色';
      Fields.FieldByName('color').ReadOnly:=true;
      dbgrid.Columns.Items[5].Width:=70;
      Fields.FieldByName('ccnum').DisplayLabel:='件数';
      Fields.FieldByName('ccnum').ReadOnly:=true;
      dbgrid.Columns.Items[6].Width:=40;
      //更改工序显示内容
      if recordcount>0 then
      begin
        ADOQtmp.First;
        for i:=1 to ADOQtmp.recordcount do
        begin
          dbgrid.Columns.Items[6+i].Font.Color:=clblue;
          dbgrid.Columns.Items[6+i].Font.Style:=[fsBold];
          dbgrid.Columns.Items[6+i].Font.Size:=12;
          dbgrid.Columns.Items[6+i].Width:=70;
          adoquery1.Fields.FieldByName(ADOQtmp.FieldValues['temp_key']).DisplayLabel:=ADOQtmp.FieldValues['seq_name'];
          ADOQtmp.next;
        end;
      end;
  end;
  
  for i:=1 to dbgrid.Columns.Count do
  begin
       dbgrid.Columns.Items[i-1].Title.Font.size:=11;
       dbgrid.Columns.Items[i-1].Title.Font.name:='宋体';
       if i>7 then
        dbgrid.Columns.Items[i-1].Title.Font.Color:=clred
       else
        dbgrid.Columns.Items[i-1].Alignment:=taCenter;
  end;    

⌨️ 快捷键说明

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