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 + -
显示快捷键?