bas_batch_qry.pas
来自「一个MRPII系统源代码版本」· PAS 代码 · 共 316 行
PAS
316 行
unit Bas_Batch_Qry;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Outer, Menus, ExtPrintReport,pr_PrintReportType, Db, ActnList, AdODB, Grids, DBGridEh,
StdCtrls, ExtCtrls, ComCtrls, ToolWin, DBCtrls, Base_Qry, jpeg;
Type
TFrm_Bas_Batch_Qry = Class(TFrm_Base_Qry)
AdoQry_tmp1: TAdoQuery;
DBGridEh1: TDBGridEh;
DataSource1: TDataSource;
AdoQry_Detail: TAdoQuery;
Label1: TLabel;
edt_find: TEdit;
AdoQry_MainBatchId: TIntegerField;
AdoQry_MainItemCode: TStringField;
AdoQry_MainBackflush: TIntegerField;
AdoQry_MainBatchremArk: TStringField;
AdoQry_MainUomName: TStringField;
AdoQry_DetailBatchId: TIntegerField;
AdoQry_DetailBatchNo: TStringField;
AdoQry_DetailBatchName: TStringField;
AdoQry_DetailVendorCode: TStringField;
AdoQry_DetailVendorBatchNo: TStringField;
AdoQry_DetailUsefulCtrl: TIntegerField;
AdoQry_DetailUsefulDate: TIntegerField;
AdoQry_DetailBatchStatus: TIntegerField;
AdoQry_DetailBatchLineRemArk: TStringField;
AdoQry_DetailFirstInDate: TDateTimeField;
AdoQry_DetailCurrentInDate: TDateTimeField;
AdoQry_DetailFirstOutDate: TDateTimeField;
AdoQry_DetailCurrentOutDate: TDateTimeField;
AdoQry_DetailVendorCode1: TStringField;
AdoQry_Detailusedates: TIntegerField;
AdoQry_DetailInvQty: TBCDField;
AdoQry_DetailBatchInv: TBCDField;
procedure AdoQry_DetailCalcFields(DataSet: TDataSet);
procedure DataSourceDataChange(Sender: TObject; Field: TField);
procedure DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure edt_findChange(Sender: TObject);
procedure Act_FilterExecute(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure Act_PrintExecute(Sender: TObject);
private
procedure GetTransValue(FieldName,OldValue:String;var NewValue:String);
{ Private declarations }
public
acondition:string;
procedure initform(AdOConnection:TAdOConnection;ReadOnly:boolean);Override;
{ Public declarations }
end;
var
Frm_Bas_Batch_Qry: TFrm_Bas_Batch_Qry;
Temp_DBGridEh:TDBGridEh;
implementation
uses Sys_Global;
{$R *.DFM}
procedure TFrm_Bas_Batch_Qry.GetTransValue(FieldName,OldValue:String;var NewValue:String);
var
i:integer;
begin
NewValue:=OldValue;
if Temp_DBGridEh<>nil then
for i:=0 to Temp_DBGridEh.Columns.Count-1 do
if(Temp_DBGridEh.Columns[i].FieldName=FieldName)then
begin
if Temp_DBGridEh.Columns[i].KeyList.IndexOf(OldValue)<>-1 then
NewValue:=Temp_DBGridEh.Columns[i].PickList.Strings[Temp_DBGridEh.Columns[i].
KeyList.IndexOf(OldValue)];
break;
end;
end;
procedure TFrm_Bas_Batch_Qry.initform(AdOConnection:TAdOConnection;ReadOnly:boolean);
begin
inherited;
Temp_Dbgrideh:=dbgrideh1;
acondition:='';
// PriceFields:='InvLMAmount,InvInAmount,InvOutAmount,InvBlncAmount,InvBillNoTaxAmount';
SelectFromSQL:=
'select Batch.ItemCode+'''+' '+'''+Item.ItemName ItemCode,Backflush,BatchremArk,'+
' Uom.UomName,Batch.Batchid '+
' from Batch join Item on Batch.ItemCode=Item.ItemCode'+
' join Uom on Item.UomCode=Uom.UomCode ';
OrderByFields:='ItemCode';
lbl_Order.Caption:='物料标识';
AdoQry_Detail.Connection :=AdoQry_Main.Connection ;
getdata;
// Frm_Sys_Condition:=TFrm_Inv_OpVendorSum_C.Create(Self);
// TFrm_Inv_OpVendorSum_C(Frm_Sys_Condition).InitForm(AdoQry_Main.Connection,UserCode,LoginDate);
// Act_Filter.Execute;
// lbl_Month.Caption:=TFrm_Inv_OpVendorSum_C(Frm_Sys_Condition).medt_Month.text;
end;
procedure TFrm_Bas_Batch_Qry.AdoQry_DetailCalcFields(DataSet: TDataSet);
begin
inherited;
if (AdoQry_Detail.fieldbyname('usefulCtrl').asstring='1') and
(not AdoQry_Detail.fieldbyname('Firstindate').IsNull) then
AdoQry_Detail.fieldbyname('usedates').asinteger:=DateTimeToTimeStamp(now).date-DateTimeToTimeStamp(AdoQry_Detail.fieldbyname('Firstindate').asdatetime).date;
end;
procedure TFrm_Bas_Batch_Qry.DataSourceDataChange(Sender: TObject;
Field: TField);
begin
inherited;
if AdoQry_Main.RecordCount=0 then
begin
AdoQry_Detail.Close;
exit;
end;
with AdoQry_Detail do
begin
Close;
sql.Text :='select Batchline.*,Batchline.VendorCode+'''+' '+'''+Vendor.VendorName VendorCode1,'+
'BatchCurrentInv.InvQty from Batchline join Vendor on Batchline.VendorCode=Vendor.VendorCode '+
'left join (select Batchno,sum(InvQty) InvQty from BatchCurrentInv group by Batchno) BatchCurrentInv'+
' on BatchCurrentInv.Batchno=Batchline.Batchno '+
'where Batchline.Batchid='+AdoQry_Main.fieldbyname('Batchid').asstring+' Order by Batchline.Batchno';
open;
end;
end;
procedure TFrm_Bas_Batch_Qry.DBGridEh1GetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
if TDBGridEh(Sender).DataSource.DataSet.RecNo mod 2=1 then
Background:=$f0f0f0
else
Background:=clWindow;
if (gdSelected in State)or(gdFocused in State) then
begin
Background:=clNavy;
AFont.Color:=clWindow;
end
else
begin
AFont.Color:=clBlack;
end;
end;
procedure TFrm_Bas_Batch_Qry.edt_findChange(Sender: TObject);
begin
if (edt_find.text<>'') then
begin
AdoQry_Main.First;
AdoQry_Main.Locate('ItemCode',edt_find.text,[loPArtialKey]);
end;
end;
procedure TFrm_Bas_Batch_Qry.Act_FilterExecute(Sender: TObject);
var
i:integer;
begin
for i:=0 to dbgrideh.Columns.Count-1 do
begin
if dbgrideh.Columns[i].FieldName='UomName' then
dbgrideh.Columns[i].Field.Origin:='Uom'
else
dbgrideh.Columns[i].Field.Origin:='Batch'
end;
inherited;
end;
procedure TFrm_Bas_Batch_Qry.Act_PreviewExecute(Sender: TObject);
var
i,j,k:integer;
GroupCaption,ColumnTitle,s1:String;
begin
if AdoQry_Detail.Active=False then
Abort;
GroupCaption:='';
ExtPrintReport.DataSet:=nil;
ExtPrintReport.Headers.clear;
i:=0;
k:=-1;
with ExtPrintReport do
begin
for j:=0 to DBGridEH1.Columns.Count-1 do
if DBGridEH1.Columns[j].Visible then
begin
Headers.Add;
ColumnTitle:=DBGridEH1.Columns[j].Title.Caption;
Headers.Items[i].Caption :=Copy(ColumnTitle,Pos('|',ColumnTitle)+1,Length(ColumnTitle)-Pos('|',ColumnTitle));
Headers.Items[i].FieldName :=DBGridEH1.Columns[j].FieldName;
Headers.Items[i].DisplayWidth:=DBGridEH1.Columns[j].Width div (DBGridEH1.Canvas.TextWidth(' '));
Headers.Items[i].Alignment :=DBGridEH1.Columns[j].Alignment;
if(Temp_DBGridEh.Columns[j].PickList.Count>0)and
(Temp_DBGridEh.Columns[j].KeyList.Count>0)then
begin
Headers.Items[i].Style:=dsTransForm;
Headers.Items[i].TransformFunction:=GetTransValue;
end
else
SetColumnsStyle(i,DBGridEH1.Columns[j].FieldName);
if (DBGridEH1.UseMultiTitle)and(Pos('|',DBGridEH1.Columns[j].Title.Caption)<>0) then
begin
ColumnTitle:=Copy(DBGridEH1.Columns[j].Title.Caption,1,Pos('|',DBGridEH1.Columns[j].Title.Caption)-1);
if GroupCaption<>ColumnTitle then
begin
Inc(k);
GroupCaption:=ColumnTitle;
HeaderGroups.Add;
HeaderGroups.Items[k].Caption:=GroupCaption;
HeaderGroups.Items[k].StArtCol:=i+1;
HeaderGroups.Items[k].endCol:=i+1;
end
else
begin
HeaderGroups.Items[k].endCol:=i+1;
end;
end
else
GroupCaption:='';
Inc(i);
end;
if AdoQry_Main.fieldbyname('Backflush').asstring='0' then
s1:='否'
else
s1:='是';
DataSet:=AdoQry_Detail;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select SysParamValueC'
+' From SysParam'
+' Where SysParamCode=''Name0''';
AdoQry_Tmp.Open;
ExtPrintReport.Title1:=AdoQry_Tmp.fieldbyname('SysParamValueC').AsString;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select ReportName1,ISOCode1'
+' From ReportCtrl'
+' Where SysMenuId='+MenuId;
AdoQry_Tmp.Open;
ExtPrintReport.Title2:=AdoQry_Tmp.fieldbyname('ReportName1').AsString;
ExtPrintReport.Subtitle2:=' 物料描述:'+AdoQry_Main.fieldbyname('ItemCode').asstring;
ExtPrintReport.Subtitle3:=' 计量单位:'+AdoQry_Main.fieldbyname('UomName').asstring+' 是否允许拉式领料:'+s1;
ExtPrintReport.Subtitle4:=' 备注:'+AdoQry_Main.fieldbyname('BatchremArk').asstring;
ExtprintReport.preview ;
end;
end;
procedure TFrm_Bas_Batch_Qry.Act_PrintExecute(Sender: TObject);
var
i,j,k:integer;
GroupCaption,ColumnTitle,s1:String;
begin
if AdoQry_Detail.Active=False then
Abort;
GroupCaption:='';
ExtPrintReport.DataSet:=nil;
ExtPrintReport.Headers.clear;
i:=0;
k:=-1;
with ExtPrintReport do
begin
for j:=0 to DBGridEH1.Columns.Count-1 do
if DBGridEH1.Columns[j].Visible then
begin
Headers.Add;
ColumnTitle:=DBGridEH1.Columns[j].Title.Caption;
Headers.Items[i].Caption :=Copy(ColumnTitle,Pos('|',ColumnTitle)+1,Length(ColumnTitle)-Pos('|',ColumnTitle));
Headers.Items[i].FieldName :=DBGridEH1.Columns[j].FieldName;
Headers.Items[i].DisplayWidth:=DBGridEH1.Columns[j].Width div (DBGridEH1.Canvas.TextWidth(' '));
Headers.Items[i].Alignment :=DBGridEH1.Columns[j].Alignment;
if(Temp_DBGridEh.Columns[j].PickList.Count>0)and
(Temp_DBGridEh.Columns[j].KeyList.Count>0)then
begin
Headers.Items[i].Style:=dsTransForm;
Headers.Items[i].TransformFunction:=GetTransValue;
end
else
SetColumnsStyle(i,DBGridEH1.Columns[j].FieldName);
if (DBGridEH1.UseMultiTitle)and(Pos('|',DBGridEH1.Columns[j].Title.Caption)<>0) then
begin
ColumnTitle:=Copy(DBGridEH1.Columns[j].Title.Caption,1,Pos('|',DBGridEH1.Columns[j].Title.Caption)-1);
if GroupCaption<>ColumnTitle then
begin
Inc(k);
GroupCaption:=ColumnTitle;
HeaderGroups.Add;
HeaderGroups.Items[k].Caption:=GroupCaption;
HeaderGroups.Items[k].StArtCol:=i+1;
HeaderGroups.Items[k].endCol:=i+1;
end
else
begin
HeaderGroups.Items[k].endCol:=i+1;
end;
end
else
GroupCaption:='';
Inc(i);
end;
if AdoQry_Main.fieldbyname('Backflush').asstring='0' then
s1:='否'
else
s1:='是';
DataSet:=AdoQry_Detail;
ExtPrintReport.Title2:='批次主文件明细数据报表';
ExtPrintReport.Subtitle2:=' 物料描述:'+AdoQry_Main.fieldbyname('ItemCode').asstring;
ExtPrintReport.Subtitle3:=' 计量单位:'+AdoQry_Main.fieldbyname('UomName').asstring+' 是否允许拉式领料:'+s1;
ExtPrintReport.Subtitle4:=' 备注:'+AdoQry_Main.fieldbyname('BatchremArk').asstring;
ExtprintReport.print(self);
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?