unit U_ContractListCGSel; 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, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, cxPC, cxButtonEdit, cxTextEdit, cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu; type TfrmContractListCGSel = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBClose: TToolButton; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DS_Main: TDataSource; v1OrdDate: TcxGridDBColumn; v1DeliveryDate: TcxGridDBColumn; v1OrdPerson1: TcxGridDBColumn; v1ConNo: TcxGridDBColumn; CDS_Sub: TClientDataSet; RM1: TRMGridReport; RMDBDataSet1: TRMDBDataSet; RMXLSExport1: TRMXLSExport; v1CustomerNoName: TcxGridDBColumn; v1Column1: TcxGridDBColumn; ADOQueryPrint: TADOQuery; v1Column4: TcxGridDBColumn; PopupMenu2: TPopupMenu; N11: TMenuItem; N21: TMenuItem; N31: TMenuItem; Panel1: TPanel; Label1: TLabel; Label4: TLabel; Label5: TLabel; Label8: TLabel; Label9: TLabel; Label12: TLabel; Label13: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; BuyName: TEdit; ywyname: TEdit; MPRTCodeName: TEdit; ConNo: TEdit; MPRTKZ: TEdit; MPRTMF: TEdit; cxTabControl1: TcxTabControl; cxSplitter1: TcxSplitter; DS_Sub: TDataSource; Label2: TLabel; v1Column10: TcxGridDBColumn; v1Column12: TcxGridDBColumn; v1Column9: TcxGridDBColumn; cxGridPopupMenu2: TcxGridPopupMenu; CDS_Main: TClientDataSet; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; v1XHNo: TcxGridDBColumn; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; v1Column5: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1PRTOrderQty: TcxGridDBColumn; v1OrderUnit: TcxGridDBColumn; v1PRTPrice: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; v1Column2: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; v1Column13: TcxGridDBColumn; Label3: TLabel; Filler: TEdit; V2Column2: TcxGridDBColumn; v1Column14: TcxGridDBColumn; v1Column15: TcxGridDBColumn; v1Column16: TcxGridDBColumn; v1Column17: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column19: TcxGridDBColumn; V2Column1: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column11: TcxGridDBColumn; V2Column3: TcxGridDBColumn; V2Column4: 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 FormShow(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure BuyNameChange(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure Tv1DblClick(Sender: TObject); private procedure InitGrid(); procedure InitForm(); procedure SetStatus(); procedure InitSub(); { Private declarations } public FFInt, FCloth: Integer; canshu1, FGSTT: string; { Public declarations } end; var frmContractListCGSel: TfrmContractListCGSel; implementation uses U_DataLink, U_ZDYHelp, U_Fun; {$R *.dfm} procedure TfrmContractListCGSel.InitSub(); begin if CDS_Main.IsEmpty then exit; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select A.*, AA.YCGQty,'); SQL.Add(' WCGQty= (case when ISNULL(A.Qty, 0)-ISNULL(AA.YCGQty, 0)<0 then 0 else ISNULL(A.Qty, 0)-ISNULL(AA.YCGQty, 0) end)'); SQL.Add(' FROM Contract_sub A '); SQL.Add(' INNER JOIN (SELECT sum(B.Qty) YCGQty,B.Y_CodeName,C.ConMainId FROM CK_Yarn_CR B INNER JOIN Contract_Main C ON B.ConNo=C.ConNo '); SQL.Add(' GROUP BY B.Y_CodeName,C.ConMainId) AA ON AA.ConMainId=A.ConMainId'); sql.Add(' where A.ConmainID =' + quotedstr((CDS_Main.fieldbyname('ConmainID').AsString))); SQL.Add(' and A.P_Name=AA.Y_CodeName'); //ShowMessage(SQL.Text); open; end; SCreateCDS20(ADOQueryTemp, CDS_Sub); SInitCDSData20(ADOQueryTemp, CDS_Sub); if ADOQueryTemp.IsEmpty then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select A.*, YCGQty=0'); SQL.Add(' ,WCGQty=Qty'); SQL.Add(' FROM Contract_sub A '); sql.Add(' where A.ConmainID =' + quotedstr((CDS_Main.fieldbyname('ConmainID').AsString))); //ShowMessage(SQL.Text); open; end; SCreateCDS20(ADOQueryCmd, CDS_Sub); SInitCDSData20(ADOQueryCmd, CDS_Sub); end; end; procedure TfrmContractListCGSel.SetStatus(); begin end; procedure TfrmContractListCGSel.FormDestroy(Sender: TObject); begin // frmContractListNX:=nil; end; procedure TfrmContractListCGSel.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caHide; end; procedure TfrmContractListCGSel.TBCloseClick(Sender: TObject); begin Close; writeCxGrid(self.Caption + tv1.Name, Tv1, '采购合同管理'); writeCxGrid(self.Caption + tv2.Name, Tv2, '采购合同管理'); end; procedure TfrmContractListCGSel.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; sql.Add('select A.*'); sql.Add(',ISSC=cast((case when isnull((select count(WBID) from TP_File X where X.WBID=A.ConMainId and X.TFType=''合同''),0)>0 then 1 else 0 end) as bit)'); sql.Add(',ZJinE=(select sum(MxMoney) MxMoney from Contract_sub B where B.ConMainId=A.ConMainId group by B.ConMainID)'); sql.Add(',ZJinUnit=(select TOP 1 BZType from Contract_sub B where B.ConMainId=A.ConMainId)'); sql.Add(',ZShuL=(select sum(Qty) Qty from Contract_sub B where B.ConMainId=A.ConMainId group by B.ConMainId)'); sql.Add(',ZPiQty=(select sum(PiQty) PiQty from Contract_sub B where B.ConMainId=A.ConMainId group by B.ConMainId)'); sql.Add(',ZYCGQty=(SELECT sum(B.Qty) FROM CK_Yarn_CR B where B.ConNo=A.ConNo)'); sql.Add(',ZWCGQty=(case when ISNULL((select sum(Qty) from Contract_sub B where B.ConMainId=A.ConMainId group by B.ConMainId), 0)-ISNULL((SELECT sum(B.Qty) FROM CK_Yarn_CR B where B.ConNo=A.ConNo), 0)<0'); SQL.Add(' then 0 else ISNULL((select sum(Qty) from Contract_sub B where B.ConMainId=A.ConMainId group by B.ConMainId), 0)-ISNULL((SELECT sum(B.Qty) FROM CK_Yarn_CR B where B.ConNo=A.ConNo), 0) end)'); sql.Add(',ZShuUnit=(select TOP 1 QtyUnit from Contract_sub B where B.ConMainId=A.ConMainId)'); sql.Add(' from Contract_Main A '); SQL.Add('where A.ConDate>=''' + FormatDateTime('yyyy-MM-dd', BegDate.DateTime) + ''''); SQL.Add('and A.ConDate<''' + FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1) + ''''); sql.Add(' and A.ConType=''采购'' '); case cxTabControl1.TabIndex of 0: begin sql.Add(' and isnull(A.status,''-1'')=''-1'''); end; 1: begin sql.Add(' and isnull(A.status,''-1'')=''0'''); end; 2: begin sql.Add(' and isnull(A.status,''-1'')=''1'''); end; 3: begin sql.Add(' and isnull(A.status,''-1'')=''2'''); end; end; //showmessage(sql.text); Open; end; SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmContractListCGSel.InitForm(); begin readCxGrid(self.Caption + tv1.Name, Tv1, '采购合同管理'); readCxGrid(self.Caption + tv2.Name, Tv2, '采购合同管理'); if FCloth = 1 then begin v1Column4.Visible := True; end else begin v1Column4.Visible := False; end; EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime - 90; InitGrid(); end; procedure TfrmContractListCGSel.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); end; procedure TfrmContractListCGSel.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmContractListCGSel.FormShow(Sender: TObject); begin InitForm(); SetStatus(); end; procedure TfrmContractListCGSel.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmContractListCGSel.CheckBox2Click(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmContractListCGSel.BuyNameChange(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_Main); SInitCDSData20(ADOQueryMain, CDS_Main); end; procedure TfrmContractListCGSel.cxTabControl1Change(Sender: TObject); begin SetStatus(); TBRafresh.Click; end; procedure TfrmContractListCGSel.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin InitSub(); end; procedure TfrmContractListCGSel.Tv1DblClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; if cxTabControl1.TabIndex<>2 then Exit; ModalResult := 1; end; end.