unit U_KnitPlanMachInPut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, DBClient, cxCalendar, cxButtonEdit, cxSplitter, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, cxTextEdit, cxCheckBox, BtnEdit, cxPC, MovePanel, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, U_BaseList, Vcl.Menus, U_BaseInput, System.ImageList, Vcl.ImgList; type TfrmKnitPlanMachInPut = class(TfrmBaseInput) GPM_1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DS_1: TDataSource; CDS_1: TClientDataSet; DS_2: TDataSource; CDS_2: TClientDataSet; GPM_2: TcxGridPopupMenu; Panel4: TPanel; PM_1: TPopupMenu; PM_2: TPopupMenu; Panel5: TPanel; Panel2: TPanel; Label10: TLabel; Label11: TLabel; Button3: TButton; edtMachNo: TEdit; edtCardQty: TEdit; Repairer: TBtnEditC; Panel1: TPanel; Label4: TLabel; CarType: TEdit; N2: TMenuItem; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; Tv1Column1: TcxGridDBColumn; v1OrderNo: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; v1Column31: TcxGridDBColumn; v1Column20: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column13: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Qty1: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column4: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; TV2Column1: TcxGridDBColumn; TV2Column2: TcxGridDBColumn; TV2Column3: TcxGridDBColumn; TV2Column4: TcxGridDBColumn; TV2Column5: TcxGridDBColumn; TV2Column6: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Label3: TLabel; Label5: TLabel; Label2: TLabel; ConNo: TEdit; C_Name: TEdit; C_Code: TEdit; ToolBar1: TToolBar; ToolButton12: TToolButton; TBClose: TToolButton; Label7: TLabel; BatchNo: TEdit; TV2Column7: TcxGridDBColumn; Panel3: TPanel; Label1: TLabel; Label12: TLabel; Label13: TLabel; Label6: TLabel; edtName: TEdit; edtCode: TEdit; edtConNo: TEdit; CardQty: TEdit; Label8: TLabel; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ConNoChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Tv1DblClick(Sender: TObject); procedure ToolButton12Click(Sender: TObject); procedure N2Click(Sender: TObject); private procedure InitOrd(); procedure InitGrid1(); procedure InitGrid2(); { Private declarations } public FMainId, FSubId: string; { Public declarations } end; var frmKnitPlanMachInPut: TfrmKnitPlanMachInPut; implementation uses U_DataLink, U_RTFun, U_ZDYHelp; {$R *.dfm} procedure TfrmKnitPlanMachInPut.InitOrd(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select A.*,B.*'); sql.Add(' ,CardQty=OrdPiece-ISNULL((select sum(CardQty) from knit_Plan_Mach AA where AA.SubId=B.SubId),0)'); sql.Add(' from knit_Plan_Main A'); sql.Add(' inner join knit_Plan_Sub B on A.MainId=B.MainId '); sql.Add(' where B.SubId=' + QuotedStr(FSubId)); Open; end; edtConNo.Text := ADOQueryTemp.FieldByName('ConNo').AsString; edtCode.Text := ADOQueryTemp.FieldByName('C_Code').AsString; edtName.Text := ADOQueryTemp.FieldByName('C_Name').AsString; CardQty.Text := ADOQueryTemp.FieldByName('CardQty').AsString; end; procedure TfrmKnitPlanMachInPut.N2Click(Sender: TObject); begin with ADOQueryTemp do begin close; sql.Clear; sql.Add(' select * from knit_Plan_Card A where A.PRTCount>1 and A.PMID=' + quotedstr(trim(CDS_2.fieldbyname('PMID').AsString))); Open; end; if not ADOQueryTemp.IsEmpty then begin Application.MessageBox('已打印布票不能删除!', '提示', 0); Exit; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('delete knit_Plan_Mach '); sql.Add('where PMID=' + quotedstr(trim(CDS_2.fieldbyname('PMID').AsString))); sql.Add('delete knit_Plan_Card '); sql.Add('where PMID=' + quotedstr(trim(CDS_2.fieldbyname('PMID').AsString))); execsql; end; CDS_2.Delete; end; procedure TfrmKnitPlanMachInPut.InitGrid1(); var fwhere: string; begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; sql.Add('select * from BS_Machine A '); sql.Add('LEFT join Knit_Plan_Mach B on A.MCNO=B.MCNo '); sql.Add('LEFT JOIN Knit_Plan_Sub C on B.SubId=C.SubId '); sql.Add('LEFT JOIN Knit_Plan_Main D on C.MainId=D.MainId '); // sql.Add(' select A.*,B.*'); // sql.Add(' ,CardQty=OrdPiece-ISNULL((select sum(CardQty) from knit_Plan_Mach AA where AA.SubId=B.SubId),0)'); // sql.Add(' ,APPS=(select Count(*) from knit_Plan_Card AA where AA.MainId=A.MainId)'); // sql.Add(' ,JYPS=(select Count(*) from knit_Cloth_Inspect AA where AA.MainId=A.MainId)'); // sql.Add(' ,JYQtyKg=(select sum(MJMaoZ) from knit_Cloth_Inspect AA where AA.MainId=A.MainId)'); // sql.Add(' ,RKPS=(select Count(*) from knit_Cloth_IO AA where AA.MainId=A.MainId and CRFlag=''入库'')'); // sql.Add(' ,RKQtyKg=(select sum(KgQty) from knit_Cloth_IO AA where AA.MainId=A.MainId and CRFlag=''入库'')'); // sql.Add(' ,CKPS=(select Count(*) from knit_Cloth_IO AA where AA.MainId=A.MainId and CRFlag=''出库'')'); // sql.Add(' ,CKQtyKg=(select sum(KgQty) from knit_Cloth_IO AA where AA.MainId=A.MainId and CRFlag=''出库'')'); //SQL.Add(',CustomerNoName=(select CustomerNoName from JYOrderCon_Main_PB X where X.MainId=A.ConMainId) '); // sql.Add(' from knit_Plan_Main A'); // sql.Add(' inner join knit_Plan_Sub B on A.MainId=B.MainId'); Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmKnitPlanMachInPut.InitGrid2(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select A.* '); sql.Add(' from Knit_Plan_Mach A '); sql.Add(' where SubId= ' + QuotedStr(Trim(FSubId))); sql.Add('order by filltime '); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); end; procedure TfrmKnitPlanMachInPut.FormDestroy(Sender: TObject); begin inherited; frmKnitPlanMachInPut := nil; end; procedure TfrmKnitPlanMachInPut.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmKnitPlanMachInPut.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmKnitPlanMachInPut.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; procedure TfrmKnitPlanMachInPut.TBRafreshClick(Sender: TObject); begin InitGrid1(); InitGrid2(); end; procedure TfrmKnitPlanMachInPut.ConNoChange(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; procedure TfrmKnitPlanMachInPut.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '指示单管理'); ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '指示单管理'); InitOrd(); InitGrid1(); InitGrid2(); end; procedure TfrmKnitPlanMachInPut.cxTabControl1Change(Sender: TObject); begin InitGrid1(); end; procedure TfrmKnitPlanMachInPut.Button3Click(Sender: TObject); var maxno, maxPCId: string; FStrs: TStringList; i, j, MPCNo: integer; begin if edtMachNo.Text = '' then Exit; if StrToIntdef(edtCardQty.Text, 0) = 0 then Exit; try FStrs := TStringList.Create(); ExtractStrings([';'], [' '], PChar(edtMachNo.Text), FStrs); ADOQueryCmd.Connection.BeginTrans; with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select CardQty=OrdPiece-ISNULL((select sum(CardQty) from knit_Plan_Mach AA where AA.SubId=B.SubId),0)'); sql.Add(' from knit_Plan_Sub B '); sql.Add(' where B.SubId=' + QuotedStr(Trim(FSubId))); Open; end; if FStrs.Count * StrToIntdef(edtCardQty.Text, 0) > ADOQueryTemp.fieldbyname('CardQty').AsInteger then begin raise Exception.Create('安排数量过多!'); end; for i := 0 to FStrs.Count - 1 do begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select PCNo=isnull(Max(PCNo),0) from knit_Plan_Mach A '); sql.Add('inner join Knit_Plan_Card B on A.PMID=B.PMID'); sql.Add('where A.SubId=' + Quotedstr(Trim(FSubId))); sql.Add('and A.MCNO=' + Quotedstr(Trim(FStrs[i]))); Open; end; if ADOQueryTemp.IsEmpty then MPCNo := 1 else MPCNo := ADOQueryTemp.FieldByName('PCNo').AsInteger + 1; if GetLSNo(ADOQueryTemp, maxno, 'PM', 'knit_Plan_Mach', 3, 1) = False then begin raise Exception.Create('取安排机台流水号失败!'); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from knit_Plan_Mach where 1=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('MainId').Value := Trim(FMainId); FieldByName('SubId').Value := Trim(FSubId); FieldByName('PMID').Value := Trim(maxno); FieldByName('MCNO').Value := Trim(FStrs[i]); FieldByName('CardQty').Value := StrToIntdef(edtCardQty.Text, 0); FieldByName('Repairid').Value := Repairer.TxtCode; FieldByName('Repairer').Value := Repairer.Text; FieldByName('BatchNo').Value := Trim(BatchNo.Text); // FieldByName('CheJian').Value := Trim(MCheJian); FieldByName('Filler').Value := Trim(DName); Post; end; ////////////////// 插入布票 ////////////////////// with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' insert into Knit_Plan_Card(MainId,SubId,PMID,PCId,PCNo,APDate,Filler,BatchNo) values'); for j := 0 to StrToIntdef(edtCardQty.Text, 0) do begin if GetLSNo(ADOQueryTemp, maxPCId, 'PC', 'knit_Plan_Mach', 3, 1) = False then begin raise Exception.Create('取布票流水号失败!'); end; if j > 0 then sql.Add(','); sql.Add(' (' + Quotedstr(Trim(FMainId))); sql.Add(',' + Quotedstr(Trim(FSubId))); sql.Add(',' + Quotedstr(Trim(maxno))); sql.Add(',' + Quotedstr(maxPCId)); sql.Add(',' + Quotedstr(IntToStr(MPCNo))); sql.Add(',getdate() '); sql.Add(',' + Quotedstr(Trim(DName))); sql.Add(',' + Quotedstr(Trim(BatchNo.Text))); sql.Add(' )'); MPCNo := MPCNo + 1; end; // ShowMessage(SqL.Text); ExecSQL; end; ////////////////// 插入布票 ////////////////////// end; ADOQueryCmd.Connection.CommitTrans; FStrs.Free; InitGrid1(); InitGrid2(); except FStrs.Free; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmKnitPlanMachInPut.Tv1DblClick(Sender: TObject); var FStrs: TStringList; begin try FStrs := TStringList.Create(); ExtractStrings([';'], [' '], PChar(edtMachNo.Text), FStrs); ShowMessage(IntToStr(FStrs.IndexOf(Trim(CDS_1.FieldByName('MCNO').AsString)))); if FStrs.IndexOf(Trim(CDS_2.FieldByName('MCNO').AsString)) < 0 then edtMachNo.Text := edtMachNo.Text + TRIM(CDS_1.FieldByName('MCNO').AsString) + ';'; finally FStrs.Free end; // str4 := copy(str4, 1, Length(str4) - 1); end; procedure TfrmKnitPlanMachInPut.ToolButton12Click(Sender: TObject); begin WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '指示单管理'); WriteCxGrid(trim(self.Caption) + 'Tv2', Tv2, '指示单管理'); end; end.