📄 outbom_log.pas
字号:
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 + -