unit U_KnitCardInPut; 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, dxScrollbarAnnotations; type TfrmKnitCardInPut = 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; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; TV2Column1: TcxGridDBColumn; TV2Column2: TcxGridDBColumn; TV2Column3: TcxGridDBColumn; TV2Column4: TcxGridDBColumn; TV2Column5: TcxGridDBColumn; TV2Column6: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Label3: TLabel; MCNO: TEdit; ToolBar1: TToolBar; ToolButton12: TToolButton; TBClose: TToolButton; Label7: TLabel; BatchNo: TEdit; TV2Column7: TcxGridDBColumn; Panel3: TPanel; Label1: TLabel; Label12: TLabel; Label13: TLabel; Label21: TLabel; edtName: TEdit; edtCode: TEdit; edtConNo: TEdit; edtWAPPS: TEdit; Label8: TLabel; Label9: TLabel; edtYAPPS: TEdit; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Label4: TLabel; isDY: TComboBox; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Button1: TButton; TV2Column8: TcxGridDBColumn; lbl1: TLabel; JHSL: TEdit; cxgrdbclmnTV2Column9: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure MCNOChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Tv1DblClick(Sender: TObject); procedure ToolButton12Click(Sender: TObject); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure RepairerBtnDnClick(Sender: TObject); procedure RepairerBtnUpClick(Sender: TObject); procedure Button1Click(Sender: TObject); private procedure InitOrd(); procedure InitGrid1(); procedure InitGrid2(); { Private declarations } public FMainId, FSubId: string; { Public declarations } end; var frmKnitCardInPut: TfrmKnitCardInPut; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_LabelPrint; {$R *.dfm} procedure TfrmKnitCardInPut.InitOrd(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select A.*,B.*'); sql.Add(' ,YAPPS=ISNULL((select count(*) from Knit_Plan_Card X where X.MainId=A.MainId and X.Status <> ''-1'' ),0)'); sql.Add(' ,WAPPS=OrdPiece-ISNULL((select count(*) from Knit_Plan_Card X where X.MainId=A.MainId and X.Status <> ''-1''),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('OrderNo').AsString; edtCode.Text := ADOQueryTemp.FieldByName('C_Code').AsString; edtName.Text := ADOQueryTemp.FieldByName('C_Name').AsString; edtYAPPS.Text := ADOQueryTemp.FieldByName('YAPPS').AsString; edtWAPPS.Text := ADOQueryTemp.FieldByName('WAPPS').AsString; end; procedure TfrmKnitCardInPut.RepairerBtnDnClick(Sender: TObject); begin Repairer.Text := ''; end; procedure TfrmKnitCardInPut.RepairerBtnUpClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'Repairer'; flagname := '����'; if ShowModal = 1 then begin Repairer.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmKnitCardInPut.InitGrid1(); var fwhere: string; begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; sql.Add(' select * '); sql.Add(' ,ZWXJPS=(select count(*) from Knit_Plan_Card X where X.CarNo =AA.MCNO and ISNULL(X.IsOffMachine,'''') = '''') '); sql.Add(' ,BWXJPS=(select count(*) from Knit_Plan_Card X where X.CarNo =AA.MCNO and ISNULL(X.IsOffMachine,'''') = '''' and MainID=''' + trim(FMainID) + ''')'); sql.Add(' ,ZWJYPS=(select count(*) from Knit_Plan_Card X where X.CarNo =AA.MCNO and isnull(Status,''0'')=''0'') '); sql.Add(' ,BWJYPS=(select count(*) from Knit_Plan_Card X where X.CarNo =AA.MCNO and isnull(Status,''0'')=''0'' and MainID=''' + trim(FMainID) + ''')'); sql.Add(' from (select A.MCNO,ISAP=''0'' from BS_Machine A where EXISTS (select CarNo from Knit_Plan_Card X where X.CarNo = A.MCNO and X.Status <> ''-1'' and X.MainID=''' + trim(FMainID) + ''')'); sql.Add(' UNION '); sql.Add(' select A.MCNO,ISAP=''1'' from BS_Machine A where not EXISTS (select CarNo from Knit_Plan_Card X where X.CarNo = A.MCNO and X.Status <> ''-1'' and X.MainID=''' + trim(FMainID) + ''')'); sql.Add(' ) AA Order BY ISAP,MCNO'); Open; end; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmKnitCardInPut.InitGrid2(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select JHSL,COUNT(*) AS APPS,CarNo,isnull(JXPerson,'''') AS JXPerson,isnull(BatchNo,'''') AS BatchNo '); sql.Add(',APDate=(select top 1 CONVERT(VARCHAR(10),X.APDate,120) from Knit_Plan_Card X where X.CarNo=A.CarNo and X.Status <> ''-1'' '); sql.Add(' and isnull(X.JXPerson,'''') = isnull(A.JXPerson,'''') and isnull(X.BatchNo,'''') = isnull(A.BatchNo,'''') and X.MainID=''' + trim(FMainId) + '''ORDER BY APDate)'); sql.Add(' ,DYPS=(select count(*) from Knit_Plan_Card X where X.CarNo=A.CarNo and PrtCount > 0 and X.Status <> ''-1'' and X.MainID=''' + trim(FMainId) + ''''); sql.Add(' and isnull(X.JXPerson,'''') = isnull(A.JXPerson,'''') and isnull(X.BatchNo,'''') = isnull(A.BatchNo,'''') )'); sql.Add(' ,JYPS=(select count(*) from Knit_Plan_Card X where X.CarNo=A.CarNo and isnull(X.Status,''0'') = ''1'' and X.MainID=''' + trim(FMainId) + ''''); sql.Add(' and isnull(X.JXPerson,'''') = isnull(A.JXPerson,'''') and isnull(X.BatchNo,'''') = isnull(A.BatchNo,'''') )'); sql.Add(' ,XJPS=(select count(*) from Knit_Plan_Card X where X.CarNo=A.CarNo and X.IsOffMachine = ''��'' and X.Status <> ''-1'' and X.MainID=''' + trim(FMainId) + ''''); sql.Add(' and isnull(X.JXPerson,'''') = isnull(A.JXPerson,'''') and isnull(X.BatchNo,'''') = isnull(A.BatchNo,'''') )'); sql.Add(' from Knit_Plan_Card A where MainId =''' + trim(FMainId) + ''''); sql.Add(' and A.Status <> ''-1'' GROUP BY CarNo,JHSL,isnull(JXPerson,''''),isnull(BatchNo,'''') '); //ShowMessage(sql.text); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); end; procedure TfrmKnitCardInPut.FormDestroy(Sender: TObject); begin inherited; frmKnitCardInPut := nil; end; procedure TfrmKnitCardInPut.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmKnitCardInPut.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmKnitCardInPut.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 TfrmKnitCardInPut.TBRafreshClick(Sender: TObject); begin InitGrid1(); InitGrid2(); end; procedure TfrmKnitCardInPut.MCNOChange(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 TfrmKnitCardInPut.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, 'ָʾ������'); ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, 'ָʾ������'); InitOrd(); InitGrid1(); InitGrid2(); end; procedure TfrmKnitCardInPut.cxTabControl1Change(Sender: TObject); begin InitGrid1(); end; procedure TfrmKnitCardInPut.Button1Click(Sender: TObject); begin edtMachNo.text := ''; end; procedure TfrmKnitCardInPut.Button3Click(Sender: TObject); var maxno, maxPCId, WSql: 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) > StrToIntdef(edtWAPPS.text, 0) 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) '); sql.Add('from Knit_Plan_Card A '); sql.Add('where A.MainID=' + Quotedstr(Trim(FMainID))); sql.Add('and A.Status <> ''-1'' and A.Carno=' + Quotedstr(Trim(FStrs[i]))); Open; end; if ADOQueryTemp.IsEmpty then MPCNo := 1 else MPCNo := ADOQueryTemp.FieldByName('PCNo').AsInteger + 1; ////////////////// ���벼Ʊ ////////////////////// with ADOQueryCmd do begin Close; sql.Clear; sql.Add(' insert into Knit_Plan_Card(MainId,SubId,CarNo,PCId,PCNo,APDate,Filler,BatchNo,JXPerson,JHSL) values'); for j := 0 to StrToIntdef(edtCardQty.Text, 0) - 1 do begin if GetLSNo(ADOQueryTemp, maxPCId, 'PC', 'knit_Plan_Mach', 4, 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(FStrs[i]))); 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(',' + Quotedstr(Trim(Repairer.Text))); sql.Add(',' + StrToFloatDef(Trim(JHSL.Text), 0).toString()); sql.Add(' )'); MPCNo := MPCNo + 1; if WSql <> '' then begin WSql := WSql + ',' + QuotedStr(Trim(maxPCId)); end else begin WSql := QuotedStr(Trim(maxPCId)); end; end; ExecSQL; end; ////////////////// ���벼Ʊ ////////////////////// end; ADOQueryCmd.Connection.CommitTrans; FStrs.Free; except FStrs.Free; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '��ʾ��Ϣ', 0); end; if trim(isDY.text) = '��' then begin try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FPreviewPrint := False; FLMType := 'KnitPlanCard'; FFiltration1 := WSql; if ShowModal = 1 then begin // Self.InitGrid(); with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update Knit_Plan_Card '); sql.Add('set PRTer=' + quotedstr(DName)); sql.Add(', PRTCount=PRTCount+1'); sql.Add(', PRTDate=getdate()'); sql.Add(' where PCID in (' + WSql + ')'); ExecSQL; end; end; end; finally frmLabelPrint.Free; end; end; InitOrd(); InitGrid1(); InitGrid2(); edtMachNo.text := ''; end; procedure TfrmKnitCardInPut.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if '0' = AViewInfo.GridRecord.Values[Tv1Column2.Index] then ACanvas.Brush.Color := $66ff66; end; procedure TfrmKnitCardInPut.Tv1DblClick(Sender: TObject); var FStrs: TStringList; begin try FStrs := TStringList.Create(); ExtractStrings([';'], [' '], PChar(edtMachNo.Text), FStrs); if FStrs.IndexOf(Trim(CDS_1.FieldByName('MCNO').AsString)) < 0 then begin edtMachNo.Text := edtMachNo.Text + TRIM(CDS_1.FieldByName('MCNO').AsString) + ';'; end; finally FStrs.Free end; // str4 := copy(str4, 1, Length(str4) - 1); end; procedure TfrmKnitCardInPut.ToolButton12Click(Sender: TObject); begin WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, 'ָʾ������'); WriteCxGrid(trim(self.Caption) + 'Tv2', Tv2, 'ָʾ������'); end; end.