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

📄 bas_bom1.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Bas_Bom1;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Outer, Menus, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
  StdCtrls, ExtCtrls, ComCtrls, ToolWin, ExtEdit, jpeg;

Type
  TFrm_Bas_Bom1 = Class(TFrm_Base_Outer)
    Lbl_IteCode: TLabel;
    Label1: TLabel;
    Lbl_RecordCount: TLabel;
    TlBtn_Hint: TToolButton;
    AdoQry_tmp1: TAdoQuery;
    Extedt_ItemCode: TExtEdit;
    AdoQry_MainBomid: TAutoIncField;
    AdoQry_Mainite_ItemCode: TStringField;
    AdoQry_MainItemName: TStringField;
    AdoQry_MainUomName: TStringField;
    AdoQry_MainPmCode: TIntegerField;
    AdoQry_MainPrepareLT: TIntegerField;
    AdoQry_MainRunLt: TIntegerField;
    AdoQry_MainQcLT: TIntegerField;
    AdoQry_MainItemUsable: TIntegerField;
    AdoQry_MainDesignNo: TStringField;
    AdoQry_MainItemCode: TStringField;
    AdoQry_MainBomItemType: TIntegerField;
    AdoQry_MainBomqty: TFloatField;
    AdoQry_MainBomScrAp_Percent: TFloatField;
    AdoQry_MainBomstatus: TIntegerField;
    AdoQry_MainDeptCode: TStringField;
    AdoQry_MainDeptName: TStringField;
    AdoQry_MainDeptB: TStringField;
    AdoQry_Mainusestyle: TIntegerField;
    AdoQry_MainBommArk: TIntegerField;
    AdoQry_MainremArk: TStringField;
    Label2: TLabel;
    Lb_ItemName: TLabel;
    Label3: TLabel;
    Lb_PmCode: TLabel;
    Lb_DesignNo: TLabel;
    Label11: TLabel;
    Lb_QcLT: TLabel;
    Label9: TLabel;
    Lb_RunLT: TLabel;
    Label7: TLabel;
    Lb_PreparelLT: TLabel;
    Label5: TLabel;
    procedure Act_NewExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Act_HintExecute(Sender: TObject);
    procedure Act_DeleteExecute(Sender: TObject);
    procedure AdoQueryAfterOpen(DataSet: TDataSet);
    procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure Extedt_ItemCodeExit(Sender: TObject);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure Act_FilterExecute(Sender: TObject);
  private
    Flag:Boolean;
    Lc_OldMaster:TStrinGlist;
    tmp_ItemCode:string;
    procedure InsertOldMaster(ItemCode:string); //把当前查询的父项插入
    procedure SetPnl_Head(R_Code:string);
    procedure GetSlave(R_Code:string);   //选出所有父项
    function  PickMasterCode(R_InitCode:string):string;
    function  HaveSlave(R_Code:string):Boolean;
    function  MasterCodeUsable(R_Code:string):Boolean;
    procedure clearPnl_Head;
    procedure LocateToSlave(T_ItemCode:String);  //定位到父项代码
    function  ItemIsSource(ItemCode: String): Boolean;
    procedure SaveDeleteToLog;
    procedure clearSinGleReCode;
    procedure GetReal_ItemCode(realite_ItemCode:string);//生成BomChange删除Bom的数据
    procedure GetBomParam;//系统是否对Bom进行审核
    procedure CheckChilType(ItemCode:string);//检查子项属性
    { Private declarations }
  public
    procedure InitReport; Override;//设置报表表头属性
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    Function  SetDeleteSql:string;Override;
    { Public declarations }
  end;

var
  Frm_Bas_Bom1: TFrm_Bas_Bom1;

implementation

uses Sys_Global,Bas_Bom1_D;
{$R *.DFM}

procedure TFrm_Bas_Bom1.InitReport; //设置报表表头属性
begin
inherited;
ExtprintReport.Subtitle3:=Lbl_IteCode.Caption+Extedt_ItemCode.Text+'  '+Label2.Caption+ Lb_ItemName.Caption+'  '+Label3.Caption+Lb_PmCode.Caption+'  '+#13+
                         Label5.Caption+Lb_PreparelLT.Caption+'  '+Label7.Caption+Lb_RunLT.Caption+'  '+Label9.Caption+Lb_QcLT.Caption+'  '+Label11.Caption+Lb_DesignNo.Caption;
end;

procedure TFrm_Bas_Bom1.SetPnl_Head(R_Code:string);
var
  T_Sql:string;
  T_Type:integer;
begin
  if R_Code<>'' then
  begin
    T_Sql:=
      'select ItemName,'+
              'ItemShortName,'+
              'UomName,'+
              'ItemType '+
      'From Item I inner join Uom U '+
            'on I.UomCode=I.UomCode '+
      'where I.ItemCode='''+R_Code+''' ';
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add(T_Sql);
      Open;
      if not eof then
      begin
//        Lbl_Name_D.Caption:=fieldbyname('ItemName').AsString;
      end;
      Close;
    end;
  end;
end;

procedure TFrm_Bas_Bom1.GetSlave(R_Code:string);
var
  T_Sql:string;
begin
  T_Sql:=' select Bom.Bomid,'+
         'Bom.ite_ItemCode,'+
         'Item.ItemName,'+
         'Uom.UomName,'+
         'Item.PmCode,'+
         'Item.PrepareLT,'+
         'Item.RunLt,'+
         'Item.QcLT,'+
         'Item.ItemUsable,'+
         'Item.DesignNo,'+
         'Bom.ItemCode,'+
         'Bom.BomItemType,'+
         'Bom.Bomqty,'+
         'Bom.BomScrAp_Percent,'+
         'Bom.Bomstatus,'+
         'Bom.DeptCode,'+
         'Dept.DeptName,'+
         'Bom.DeptCode+'' ''+Dept.DeptName as DeptB,'+
         'Bom.usestyle ,'+
         'Bom.BommArk,'+
         'Bom.remArk'+
  ' from Bom'+
  ' join Item on Item.ItemCode=Bom.ite_ItemCode'+
  ' join Uom on Uom.UomCode=Item.UomCode'+
  ' join Dept on Dept.DeptCode=Bom.DeptCode'+
  ' and Bom.ItemCode='+Quotedstr(R_Code)+
  ' Order by Bom.ite_ItemCode ';
  with AdoQry_Main do
  begin
    Close;
    SQL.clear;
    SQL.Add(T_Sql);
    open;
    //设置BOTTON的提示信息
    Lbl_RecordCount.Caption:=IntTostr(RecordCount);
  end;
  DBGridEh.Columns[0].Visible:=True;
  Flag:=False;
end;

function TFrm_Bas_Bom1.HaveSlave(R_Code:string):Boolean;
var
  T_Count:integer;
  T_Sql:string;
begin
  T_Sql:=
    'Select Count(*) as RecordCount '+
    'from Bom '+
    'where Ite_ItemCode='''+R_Code+'''';
  with AdoQry_Tmp do
  begin
    Close;
    SQL.clear;
    SQL.Add(T_Sql);
    open;
    T_Count:=fieldbyname('RecordCount').AsInteger;
    Close;
  end;
  if T_Count>0 then
    Result:=True
  else
    Result:=False;
end;

function TFrm_Bas_Bom1.MasterCodeUsable(R_Code:string):Boolean;
var
  T_Count:integer;
  T_Sql:string;
begin
   T_Sql:=
    'Select Count(*) as RecordCount '+
    'from Item '+
    'where ItemCode='''+R_Code+''' '+
    '  and ItemUsable=1';
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add(T_Sql);
      open;
      T_Count:=fieldbyname('RecordCount').AsInteger;
      Close;
    end;
   if T_Count>0 then
     Result:=True
   else
     Result:=False;
end;

function TFrm_Bas_Bom1.PickMasterCode(R_InitCode:string):String;
begin
 //根据InitCode调用QuickPick
  Result:=GetCodeHint (
        AdoQry_Main,
        'ItemName','物料描述',
        'ItemCode','物料代码',
        'Item',R_InitCode,'ItemUsable=1');
end;

procedure TFrm_Bas_Bom1.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
var
  T_ItemCode:string;
begin
  inherited;
  GetBomParam;
  AdoQry_tmp1.Connection :=AdoQry_tmp.Connection ;
  T_ItemCode:='';
  Frm_Sys_Detail:=TFrm_Bas_Bom1_D.Create(Application);
//  GetSlave('');

end;

function TFrm_Bas_Bom1.SetDeleteSql:string;
var
  T_ItemCode:string;
  Tmp_Str:String;
begin
  try
    AdoQry_Main.First;
    While Not AdoQry_Main.Eof Do
    begin
      if AdoQry_Main.fieldbyname('BommArk').asinteger<>0 then
      begin
        Tmp_Str:=Tmp_Str+
             ' Delete from Bom '+
             ' where BomId='+IntToStr(AdoQry_Main.fieldbyname('BomId').AsInteger)+' ';
      SaveDeleteToLog;
      end;
      AdoQry_Main.Next;
    end;
  finally
    Result:=Tmp_Str;
  end;
end;

procedure TFrm_Bas_Bom1.Act_NewExecute(Sender: TObject);
begin
  //强制类型转换
  TFrm_Bas_Bom1_D(Frm_Sys_Detail).SlaveCode:=Extedt_ItemCode.Text;
  if not AdoQry_Main.Eof then
  begin
    TFrm_Bas_Bom1_D(Frm_Sys_Detail).MasterCode:=AdoQry_Main.fieldbyname('ite_ItemCode').AsString
  end
  else TFrm_Bas_Bom1_D(Frm_Sys_Detail).MasterCode:='';
  //判断子项是否为资源
  if ItemIsSource(Extedt_ItemCode.Text) then
  begin
    DispInfo('资源不允许增加父项!',1);
    Abort;
  end;

  inherited;
  GetSlave(Extedt_ItemCode.Text);
  LocateToSlave(TFrm_Bas_Bom1_D(Frm_Sys_Detail).MasterCode);
end;

procedure TFrm_Bas_Bom1.FormCreate(Sender: TObject);
begin
  inherited;
  ExtendCaption:=False;
  Lc_OldMaster:=TStrinGlist.Create;
  Lbl_RecordCount.Caption:='';
  TlBtn_Hint.left:=TlBtn_Help.left+TlBtn_Help.Width;
  Extedt_ItemCode.Text:='';
  Lb_ItemName.Caption:='';
  Lb_PmCode.Caption:='';
  Lb_PreparelLT.Caption:='';
  Lb_RunLT.Caption:='';
  Lb_QcLT.Caption:='';
  Lb_DesignNo.Caption:='';
end;

procedure TFrm_Bas_Bom1.FormActivate(Sender: TObject);
begin
  inherited;
//  TlBtn_filter.Action:=Action1;
//  ToolButton6.Action:=Action2;
  Extedt_ItemCode.Setfocus;
//  Act_New.ImageIndex:=4;
//  TlBtn_filter.Visible:=False;
  ToolButton6.Visible:=False;
  TlBtn_Hint.Visible:=False;
end;

procedure TFrm_Bas_Bom1.clearPnl_Head;
begin
//  Lbl_Name_D.Caption:='';
end;

procedure TFrm_Bas_Bom1.Act_ModifyExecute(Sender: TObject);
begin
  //强制类型转换
  if not AdoQry_Main.Eof then
  begin
    TFrm_Bas_Bom1_D(Frm_Sys_Detail).MasterCode:=AdoQry_Main.fieldbyname('ite_ItemCode').AsString;
    TFrm_Bas_Bom1_D(Frm_Sys_Detail).SlaveCode:=Extedt_ItemCode.Text;
    inherited;
    if Frm_Sys_Detail.ModalResult=MrOk then
    begin
      GetSlave(Extedt_ItemCode.Text);
      LocateToSlave(TFrm_Bas_Bom1_D(Frm_Sys_Detail).MasterCode);
    end;
  end;
end;

procedure TFrm_Bas_Bom1.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Action:=CaFree;
end;

⌨️ 快捷键说明

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