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

📄 sfc_enter_mounitmnrequesth.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Sfc_Enter_MoUnitMnRequestH;
 
Interface

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

Type
    TFrm_Sfc_Enter_MoUnitMnRequestH = Class(TFrm_Base_Entry_Head)
    Label1: TLabel;
    DBText1: TDBText;
    AdoQry_HeadCheckFlag: TIntegerField;
    AdoQry_HeadMoNo: TStringField;
    AdoQry_HeadMoLineNo: TIntegerField;
    AdoQry_HeadMoLineStatus: TIntegerField;
    AdoQry_HeadDeptCode: TStringField;
    AdoQry_HeadDeptName: TStringField;
    AdoQry_HeadMoSpecial: TIntegerField;
    AdoQry_HeadItemCode: TStringField;
    AdoQry_HeadItemName: TStringField;
    AdoQry_HeadMoQty: TFloatField;
    AdoQry_HeadMoNoFinishQty: TFloatField;
    AdoQry_HeadMoStArtWorkDate: TDateTimeField;
    AdoQry_HeadMoLineDate: TDateTimeField;
    AdoQry_HeadDeptFlag: TStringField;
    procedure Act_NewExecute(Sender: TObject);
    procedure AdoQry_HeadBeforeInsert(DataSet: TDataSet);
    procedure FormDestroy(Sender: TObject);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AdoQry_HeadBeforeEdit(DataSet: TDataSet);
    procedure AdoQry_HeadAfterPost(DataSet: TDataSet);
    procedure Act_FilterExecute(Sender: TObject);
    procedure DBGridEhKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    Flag : Boolean;
    SelectedCount : Integer;
    { Private declarations }
  public
    tmp_MoRequestshift:string;
    tmp_DeptCode:string;
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    { Public declarations }
  end;

var
  Frm_Sfc_Enter_MoUnitMnRequestH: TFrm_Sfc_Enter_MoUnitMnRequestH;

implementation

uses  Sfc_Enter_MoUnitMnRequest,Sys_Global;

{$R *.DFM}

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
var SqlText : String;
begin
  inherited;
  Application.ProcessMessages;
  Flag := False;
  Tmp_DeptCode := '';
  SelectedCount := 0;
  //设置表头SQL
  SqlText := 'select CheckFlag=0,'+
                    ' MoLine.MoNo,'+
                    ' MoLine.MoLineNo,'+
                    ' MoLine.MoLineStatus,'+
                    ' Mo.DeptCode, '+
                    ' Dept.DeptName, ' +
                    ' Mo.DeptCode+'' ''+Dept.DeptName as DeptFlag, '+
                    ' Mo.MoSpecial, '  +
                    ' MoLine.ItemCode,'+
                    ' Item.ItemName,'+
                    ' MoLine.MoQty,'+
                    ' MoLine.MoNoFinishQty,'+
                    ' MoLine.MoStArtWorkDate,'+
                    ' MoLine.MoLineDate '+
                  ' Into #TmPMoLine '+
                  ' from MoLine '+
                  ' Join Mo On MoLine.MoNo=Mo.MoNo '+
                  ' left join Item  on MoLine.ItemCode=Item.ItemCode '+
                  ' left join Dept On Mo.DeptCode=Dept.DeptCode '+
                  ' Where BackFlush<>1 and MoQty>0 and MoLineStatus=6 ';
  ExecuteSql(AdoQry_Tmp,SqlText,1);
  SelectFromSql := 'Select * from #TmPMoLine';
  //设置排序字段信息
  OrderByFields := 'DeptCode,ItemCode,MoNo,MoLineNo';
  //固定条件为不是拉式领料且数量不为零
  Frm_Entry_Body := TFrm_Sfc_Enter_MoUnitMnRequest.Create(Self);
  Act_Filter.Execute;
//  GetData;
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.Act_NewExecute(Sender: TObject);
var
  tmp_locateid:string;
begin
  If AdoQry_Head.State In [dsEdit,dsInsert] Then AdoQry_Head.Post;
  If SelectedCount = 0 then exit;
  Inherited; 
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.AdoQry_HeadBeforeInsert(DataSet: TDataSet);
begin
  inherited;
  abort;
end;


procedure TFrm_Sfc_Enter_MoUnitMnRequestH.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Sfc_Enter_MoUnitMnRequestH:=nil;
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.DBGridEhTitleClick(
  Column: TColumnEh);
var
  BookMArk:String;
begin
  inherited;
  If Trim(Column.Title.Caption)<>'标记' Then
    Abort;
  If AdoQry_Head.RecordCount=0 Then
    Abort;
  BookMArk:=AdoQry_Head.BookmArk;
  If Not Flag Then
  begin
    AdoQry_Head.First;
    While Not AdoQry_Head.Eof Do
    begin
      AdoQry_Head.Edit;
      AdoQry_Head.fieldbyname('CheckFlag').AsInteger:=1;
      AdoQry_Head.Post;
      AdoQry_Head.Next;
    end;
  end
  Else
  begin
    AdoQry_Head.First;
    While Not AdoQry_Head.Eof Do
    begin
      AdoQry_Head.Edit;
      AdoQry_Head.fieldbyname('CheckFlag').AsInteger:=0;
      AdoQry_Head.Post;
      AdoQry_Head.Next;
    end;
  end;
  AdoQry_Head.BookmArk:=BookMArk;
  Flag:=Not Flag;
end;


procedure TFrm_Sfc_Enter_MoUnitMnRequestH.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Try
    ExecuteSql(AdoQry_Tmp,'Drop Table #TmPMoLine',1);
  Except
  end;
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.AdoQry_HeadBeforeEdit(
  DataSet: TDataSet);
begin
  inherited;
  If Tmp_DeptCode='' then exit;
  If SelectedCount=0 Then exit;
  If AdoQry_Head.fieldbyname('DeptFlag').AsString <> Tmp_DeptCode then
  begin
    DispInfo('只能选择同一受单部门的生产订单!',3);
    Abort;
  end;
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.AdoQry_HeadAfterPost(
  DataSet: TDataSet);
var SQlText : String;
begin
  inherited;
  If AdoQry_Head.fieldbyname('CheckFlag').AsInteger =1 Then
  begin
    Tmp_DeptCode := AdoQry_Head.fieldbyname('DeptFlag').AsString;
    Inc(SelectedCount);
  end
  Else 
  if SelectedCount>0 Then
  Dec(SelectedCount);
  SqlText := 'Update #TmPMoLine '
            +'   set CheckFlag='+AdoQry_Head.fieldbyname('CheckFlag').AsString
            +'  Where MoNo='+QuotedStr(AdoQry_Head.fieldbyname('MoNo').AsString)
            +'    and MoLineNo='+AdoQry_Head.fieldbyname('MoLineNo').AsString;
  ExecuteSql(AdoQry_Tmp,SqlText,1);
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.Act_FilterExecute(
  Sender: TObject);
var tmpC : String;
begin
  TmpC := Condition;
  If AdoQry_Head.State In [dsEdit,dsInsert] Then AdoQry_Head.Post;
  inherited;
  ExecuteSql(AdoQry_tmp,'Update #TmPMoLine set checkflag=0 '
                      +' where CheckFlag=1 '+IifString(Trim(Tmpc)='','',' and '+TmpC),1);
  ExecuteSql(AdoQry_tmp,'select * from #TmPMoLine where CheckFlag=1 '+IifString(Trim(Condition)='','',' and '+Condition),0);
  If AdoQry_Tmp.RecordCount=0 then 
  begin
    SelectedCount := 0;
    tmp_DeptCode := ''
  end
  else
  begin
    SelectedCount := AdoQry_Tmp.RecordCount;
    Tmp_DeptCode := AdoQry_Tmp.fieldbyname('DeptFlag').AsString;
  end;
  GetData;
end;

procedure TFrm_Sfc_Enter_MoUnitMnRequestH.DBGridEhKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  If Key = Vk_Space then 
  begin
    AdoQry_Head.Edit;
    AdoQry_Head.fieldbyname('CheckFlag').AsInteger := IifInteger(AdoQry_Head.fieldbyname('CheckFlag').AsInteger=0,1,0);
    AdoQry_Head.Post;    
  end;
end;

end.

⌨️ 快捷键说明

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