unit U_PKFKList; 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, cxPC, cxCheckBox, Menus; type TfrmPKFKList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; TBExport: TToolButton; Order_Main: TClientDataSet; RM1: TRMGridReport; RMDBMain: TRMDBDataSet; RMXLSExport1: TRMXLSExport; CDS_PRT: TClientDataSet; ToolButton3: TToolButton; Panel1: TPanel; Label2: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; FactoryName: TEdit; Label6: TLabel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column6: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1ShipDate: TcxGridDBColumn; v1Column12: TcxGridDBColumn; v1Column15: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1Column22: TcxGridDBColumn; ToolButton1: TToolButton; ToolButton4: TToolButton; v1Column1: TcxGridDBColumn; cxTabControl1: TcxTabControl; ToolButton2: TToolButton; v1Column16: TcxGridDBColumn; v1Column17: TcxGridDBColumn; Label3: TLabel; PayMent: TEdit; Label4: TLabel; ComTaiTou: TEdit; v1Column18: TcxGridDBColumn; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ToolButton5: TToolButton; v1Column19: TcxGridDBColumn; v1Column20: TcxGridDBColumn; v1Column23: TcxGridDBColumn; v1Column3: TcxGridDBColumn; ClientDataSet3: TClientDataSet; Label5: TLabel; v1Column4: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v1Huilv: TcxGridDBColumn; Label1: TLabel; BZType: TComboBox; Label7: TLabel; JBPerson: TEdit; Label8: TLabel; PKName: TEdit; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure FactoryNameChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private FInt,PFInt:Integer; canshu1,canshu2:string; FNowDate:TDateTime; procedure InitGrid(); procedure InitForm(); function DelData():Boolean; function SaveFKData():Boolean; function SaveFKQTData():Boolean; function HXYFK(FKID:string):Boolean; { Private declarations } public { Public declarations } end; var frmPKFKList: TfrmPKFKList; implementation uses U_DataLink,U_RTFun,U_PKInPut,U_ModuleNote, U_ZDYHelp; {$R *.dfm} procedure TfrmPKFKList.FormDestroy(Sender: TObject); begin frmPKFKList:=nil; end; procedure TfrmPKFKList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmPKFKList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('�ʽ����븶���б�',Tv1,'�������'); end; procedure TfrmPKFKList.InitGrid(); var fsj:String; begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; sql.Add(' select A.*'); SQL.Add(' from YF_Money_PaiKuan A where 1=1 '); if cxTabControl1.TabIndex=2 then begin sql.Add(' and A.PKDate>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+''''); sql.Add(' and A.PKDate<'''+Trim(FormatDateTime('yyyy-MM-dd',Enddate.Date+1))+''''); end else if cxTabControl1.TabIndex=1 then begin sql.Add(' and A.FKTime>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+''''); sql.Add(' and A.FKTime<'''+Trim(FormatDateTime('yyyy-MM-dd',Enddate.Date+1))+''''); end; sql.Add(' and isnull(ChkStatus,'''')=''���ͨ��'' '); if cxTabControl1.TabIndex=0 then begin sql.Add(' and isnull(FKID,'''')='''' '); end else if cxTabControl1.TabIndex=1 then begin sql.Add(' and isnull(FKID,'''')<>'''' '); end; Open; end; SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmPKFKList.InitForm(); begin FNowDate:=SGetServerDate(ADOQueryTemp); EndDate.Date:=FNowDate+7; BegDate.Date:=FNowDate-7; ReadCxGrid('�ʽ����븶���б�',Tv1,'�������'); end; function TfrmPKFKList.DelData():Boolean; begin try Result:=false; ADOQueryCmd.Connection.BeginTrans; with Order_Main do begin First; while Locate('SSel',True,[]) do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete YF_Money_PaiKuan where PKId='''+Trim(Order_Main.fieldbyname('PKId').AsString)+''''); ExecSQL; end; Order_Main.Delete; end; end; ADOQueryCmd.Connection.CommitTrans; Result:=True; except ADOQueryCmd.Connection.RollbackTrans; Result:=False; Application.MessageBox('����ɾ���쳣��','��ʾ',0); end; end; procedure TfrmPKFKList.TBExportClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; TcxGridToExcel('�ʽ����븶���б�',cxGrid1); end; procedure TfrmPKFKList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmPKFKList.FormShow(Sender: TObject); begin InitForm(); end; procedure TfrmPKFKList.cxPageControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmPKFKList.ToolButton3Click(Sender: TObject); begin try frmModuleNote:=TfrmModuleNote.Create(Application); with frmModuleNote do begin flag:='�ʽ����븶��'; if ShowModal=1 then begin end; end; finally frmModuleNote.Free; end; end; procedure TfrmPKFKList.FormCreate(Sender: TObject); begin canshu1:=Trim(DParameters1); canshu2:=Trim(DParameters2); end; procedure TfrmPKFKList.cxTabControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmPKFKList.FactoryNameChange(Sender: TObject); begin if ADOQueryMain.Active=False then Exit; SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; procedure TfrmPKFKList.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.Active=False then Exit; SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,Order_Main); SInitCDSData20(ADOQueryMain,Order_Main); end; procedure TfrmPKFKList.ToolButton4Click(Sender: TObject); var fPrintFile:string; begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex<>2 then Exit; if Order_Main.Locate('SSel',True,[])=False then begin Application.MessageBox('û��ѡ������!','��ʾ',0); Exit; end; fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\�ʽ�������.rmf' ; with ADOQueryCmd do begin close; sql.Clear; sql.Add('delete TBSubID where DName='''+Trim(DName)+''''); ExecSQL; end; Order_Main.DisableControls; with Order_Main do begin First; while not Eof do begin if Order_Main.FieldByName('SSel').AsBoolean=True then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('insert into TBSubID'); sql.Add(' select '''+Trim(Order_Main.fieldbyname('PKID').AsString)+''''); sql.Add(','''+Trim(DName)+''''); ExecSQL; end; Edit; FieldByName('PrtFlag').Value:=True; Post; end; Next; end; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_PaiKuan Set PrtFlag=1,PrtTime=getdate(),Prter='''+Trim(DName)+''''); sql.Add(' where PKID in(select SubId from TBSubID A where A.DName='''+Trim(DName)+''')'); ExecSQL; end; Order_Main.EnableControls; with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select AA.*,'); sql.Add(' Case when isnull(FactoryNameOther,'''')<>'''' then RTrim(FactoryNameOther)+''/''+RTrim(FactoryName) '); sql.Add(' else FactoryNameQC end as FactoryNameHZ'); sql.Add(' from ('); sql.Add(' select A.PKID,A.ComTaiTou,A.PKYongTu,A.PayMent,A.FactoryNameOther,A.FactoryName,isnull(A.PKMoney,0) PKMoney,A.ChkNote '); sql.Add(' ,isnull(A.BQKKMoney,0) BQKKMoney,isnull(A.HZKKMoney,0) HZKKMoney,isnull(A.BQYFMoney,0) BQYFMoney,isnull(A.HZYFMoney,0) HZYFMoney'); sql.Add(',isnull(A.DDuiZhangMoney,0) DDuiZhangMoney,isnull(A.MaxHZYFMoney,0) MaxHZYFMoney,A.PKDate,A.Filler'); sql.Add(' ,FYear=Rtrim(Convert(varchar(4),A.PKDate,120))+''��'''); sql.Add(' ,FactoryNameQC=(select KHName from ZH_KH_Info B where B.KHNameJC=A.FactoryName and B.Type=''GYS'' ) '); sql.Add(' from YF_Money_PaiKuan A'); sql.Add(' where PKID in(select SubId from TBSubID where DName='''+Trim(DName)+'''))AA'); Open; end; SCreateCDS20(ADOQueryTemp,CDS_PRT); SInitCDSData20(ADOQueryTemp,CDS_PRT); if FileExists(fPrintFile) then begin //RMVariables['FMonth']:=Order_Main.fieldbyname('KQDate10').AsString; RM1.ShowPrintDialog:=True; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'�ʽ�������'),'��ʾ',0); end; end; procedure TfrmPKFKList.N1Click(Sender: TObject); begin SelOKNo(Order_Main,True); end; procedure TfrmPKFKList.N2Click(Sender: TObject); begin SelOKNo(Order_Main,False); end; procedure TfrmPKFKList.ToolButton2Click(Sender: TObject); begin if cxTabControl1.TabIndex<>0 then Exit; if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel',True,[])=False then begin Application.MessageBox('û��ѡ������!','��ʾ',0); Exit; end; if Order_Main.Locate('SSel;FKMoney',VarArrayOf([True,null]),[loPartialKey])=True then begin Application.MessageBox('�������Ϊ��!','��ʾ',0); Exit; end; if Order_Main.Locate('SSel;FKTime',VarArrayOf([True,null]),[loPartialKey])=True then begin Application.MessageBox('�������ڲ���Ϊ��!','��ʾ',0); Exit; end; if Order_Main.Locate('SSel;ComTaiTou',VarArrayOf([True,null]),[loPartialKey])=True then begin Application.MessageBox('���λ����Ϊ��!','��ʾ',0); Exit; end; if Order_Main.Locate('SSel;BZType;HuiLv',VarArrayOf([True,'����',null]),[loPartialKey])=True then begin Application.MessageBox('���ʲ���Ϊ��!','��ʾ',0); Exit; end; Order_Main.DisableControls; with Order_Main do begin First; while not Eof do begin if FieldByName('SSel').AsBoolean=True then begin if FieldByName('FKMoney').Value=0 then begin Order_Main.EnableControls; Application.MessageBox('�������Ϊ��!','��ʾ',0); Exit; end; if FieldByName('FKMoney').Value>FieldByName('PKMoney').Value then begin Order_Main.EnableControls; Application.MessageBox('������ܴ���������!','��ʾ',0); Exit; end; end; Next; end; end; Order_Main.EnableControls; if Application.MessageBox('ȷ��Ҫ������','��ʾ',32+4)<>IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin First; while Order_Main.Locate('SSel',True,[]) do begin if Trim(Order_Main.fieldbyname('HZType').AsString)='����' then begin SaveFKData(); end else begin SaveFKQTData(); end; Order_Main.Delete; end; end; ADOQueryCmd.Connection.CommitTrans; Order_Main.EnableControls; except Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('�����쳣!','��ʾ',0); end; end; function TfrmPKFKList.SaveFKData():Boolean; var maxId,CRID:String; begin try //ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where FactoryNo='''+Trim(Order_Main.fieldbyname('FactoryNo').AsString)+''''); Open; end; if ADOQueryCmd.IsEmpty=False then begin CRID:=ADOQueryCmd.fieldbyname('CRID').AsString; end else begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CRID set CRID=CRID+1'); sql.Add('select * from YF_Money_CRID '); Open; end; CRID:=ADOQueryCmd.fieldbyname('CRID').AsString; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from YF_Money_KC where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('FactoryNo').Value:=Trim(Order_Main.fieldbyname('FactoryNo').AsString); FieldByName('FactoryName').Value:=Trim(Order_Main.fieldbyname('FactoryName').AsString); FieldByName('ZdyStr1').Value:='Ӧ����'; Post; end; end; if GetLSNo(ADOQueryCmd,maxId,'SF','YF_Money_CR',4,1)=False then begin Result:=False; Application.MessageBox('ȡ��������ʧ�ܣ�','��ʾ',0); Exit; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from YF_Money_CR where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('YFID').Value:=Trim(maxId); FieldByName('CRID').Value:=StrToInt(CRID); FieldByName('Filler').Value:=Trim(DName); FieldByName('CRType').Value:='����Ǽ�'; FieldByName('CRFlag').Value:='Ӧ����'; FieldByName('QtyFlag').Value:=-1; FieldByName('FactoryNo').Value:=Trim(Order_Main.fieldbyname('FactoryNo').AsString); FieldByName('FactoryName').Value:=Trim(Order_Main.fieldbyname('FactoryName').AsString); FieldByName('CRTime').Value:=Order_Main.fieldbyname('FKTime').Value; FieldByName('Money').Value:=Order_Main.fieldbyname('FKMoney').Value; FieldByName('BBMoney').Value:=Order_Main.fieldbyname('FKMoney').Value; FieldByName('BZType').Value:='�����'; FieldByName('HuiLv').Value:=1; FieldByName('Note').Value:=Order_Main.fieldbyname('FKNote').Value; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPdate YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(' where CRID='+CRID); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_PaiKuan Set FKPerson='''+Trim(DName)+''''); sql.Add(',FKID='''+Trim(maxId)+''''); sql.Add(',FKTime='''+Trim(FormatDateTime('yyyy-MM-dd',Order_Main.fieldbyname('FKTime').AsDateTime))+''''); sql.Add(',FKMoney='+Trim(Order_Main.fieldbyname('FKMoney').AsString)); sql.Add(',FKNote='''+Trim(Order_Main.fieldbyname('FKNote').AsString)+''''); sql.Add(' where PKID='''+Trim(Order_Main.fieldbyname('PKID').AsString)+''''); ExecSQL; end; Result:=True; {if HXYFK(maxId)=True then begin Result:=True; end else begin Result:=False; end; } except Result:=True; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('���渶��ʧ��!','��ʾ',0); end; end; function TfrmPKFKList.SaveFKQTData():Boolean; var maxId:String; begin try //ADOQueryCmd.Connection.BeginTrans; if GetLSNo(ADOQueryCmd,maxId,'QF','YF_Money_CR',4,1)=False then begin Result:=False; Application.MessageBox('ȡ������������ʧ�ܣ�','��ʾ',0); Exit; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from YF_Money_CR where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('YFID').Value:=Trim(maxId); FieldByName('Filler').Value:=Trim(DName); FieldByName('CRType').Value:='����Ǽ�'; FieldByName('CRFlag').Value:='Ӧ����'; FieldByName('QtyFlag').Value:=-1; FieldByName('FactoryNo').Value:=Trim(Order_Main.fieldbyname('FactoryNo').AsString); FieldByName('FactoryName').Value:=Trim(Order_Main.fieldbyname('FactoryName').AsString); FieldByName('CRTime').Value:=Order_Main.fieldbyname('FKTime').Value; FieldByName('Money').Value:=Order_Main.fieldbyname('FKMoney').Value; FieldByName('BBMoney').Value:=Order_Main.fieldbyname('FKMoney').Value *Order_Main.fieldbyname('HuiLv').Value; FieldByName('Note').Value:=Order_Main.fieldbyname('FKNote').Value; FieldByName('BZType').Value:=Order_Main.fieldbyname('BZType').Value; FieldByName('HuiLv').Value:=Order_Main.fieldbyname('HuiLv').Value; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_PaiKuan Set FKPerson='''+Trim(DName)+''''); sql.Add(',FKID='''+Trim(maxId)+''''); sql.Add(',FKTime='''+Trim(FormatDateTime('yyyy-MM-dd',Order_Main.fieldbyname('FKTime').AsDateTime))+''''); sql.Add(',FKMoney='+Trim(Order_Main.fieldbyname('FKMoney').AsString)); sql.Add(',FKNote='''+Trim(Order_Main.fieldbyname('FKNote').AsString)+''''); sql.Add(',HuiLv='+Trim(Order_Main.fieldbyname('HuiLv').AsString)); sql.Add(' where PKID='''+Trim(Order_Main.fieldbyname('PKID').AsString)+''''); ExecSQL; end; Result:=True; except Result:=True; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('������������ʧ��!','��ʾ',0); end; end; function TfrmPKFKList.HXYFK(FKID:string):Boolean; var factoryname,FFKMoney,maxno,FXType:String; begin Result:=False; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select FXType,'); sql.Add(' DHXMoney=Money-isnull((select isnull(Sum(HXMoney),0) from YF_Money_CR_HX B where B.FKID=A.YFID),0)'); sql.Add(' from YF_Money_CR A'); SQL.Add(' where YFID='''+Trim(FKID)+''''); Open; end; FFKMoney:=ADOQueryTemp.fieldbyname('DHXMoney').AsString; FXType:=Trim(ADOQueryTemp.fieldbyname('FXType').AsString); if StrToFloat(FFKMoney)>0 then begin if Trim(FXType)='' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.*,YingFuMoney=Money-YiFuMoney '); sql.Add(' ,DZMoney=(select isnull(Money,0) from JYOrder_Main_MD_HZ HZ where HZ.MHID=A.MHID)'); sql.Add(' ,DZChaEMoney=(select isnull(ChaEMoney,0) from JYOrder_Main_MD_HZ HZ where HZ.MHID=A.MHID)'); sql.Add(' from YF_Money_CR A '); sql.Add(' where FactoryName='''+Trim(Order_Main.fieldbyname('FactoryName').AsString)+''''); //SQL.Add(' and CRID='+Trim(ClientDataSet2.fieldbyname('CRID').AsString)); sql.Add(' and CRType=''Ӧ����Ǽ�'' '); sql.Add(' and (Money-YiFuMoney)<>0'); sql.Add(' and not exists(select * from JYOrder_Main_MD_HZ C where C.YFID=A.YFID and isnull(C.ItemName,'''')=''����'')'); sql.Add(' order by CRTime,Money'); Open; end; end else if Trim(FXType)='����' then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.*,YingFuMoney=Money-YiFuMoney '); sql.Add(' ,DZMoney=(select isnull(Money,0) from JYOrder_Main_MD_HZ HZ where HZ.MHID=A.MHID)'); sql.Add(' ,DZChaEMoney=(select isnull(ChaEMoney,0) from JYOrder_Main_MD_HZ HZ where HZ.MHID=A.MHID)'); sql.Add(' from YF_Money_CR A '); sql.Add(' where isnull(A.MHID,'''')='''+Trim(Order_Main.fieldbyname('MHID').AsString)+''''); sql.Add(' and CRType=''Ӧ����Ǽ�'' '); sql.Add(' and (Money-YiFuMoney)<>0'); Open; end; end; SCreateCDS20(ADOQueryTemp,ClientDataSet3); SInitCDSData20(ADOQueryTemp,ClientDataSet3); with ClientDataSet3 do begin First; while not Eof do begin if ClientDataSet3.FieldByName('DZMoney').Value<0 then begin if ClientDataSet3.FieldByName('DZChaEMoney').Value<>0 then begin Next; end; end; if ClientDataSet3.FieldByName('YingFuMoney').Value<=StrToFloat(FFKMoney) then //���Ӧ�����С�ڵ��ڸ����� begin if StrToFloat(FFKMoney)>0 then begin if GetLSNo(ADOQueryCmd,maxno,'YH','YF_Money_CR_HX',4,1)=False then begin Result:=False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('ȡ������ˮ��ʧ��!','��ʾ',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR_HX where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('YHID').Value:=Trim(maxno); FieldByName('YFID').Value:=Trim(ClientDataSet3.fieldbyname('YFID').AsString); FieldByName('FKID').Value:=Trim(FKID); FieldByName('HXMoney').Value:=ClientDataSet3.FieldByName('YingFuMoney').Value; FieldByName('Filler').Value:=Trim(DName); Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set YiFuMoney=(select isnull(Sum(HXMoney),0) from YF_Money_CR_HX A where A.YFID=YF_Money_CR.YFID)'); sql.Add(' where YFID='''+Trim(ClientDataSet3.fieldbyname('YFID').AsString)+''''); ExecSQL; end; FFKMoney:=FloatToStr(StrToFloat(FFKMoney)-ClientDataSet3.FieldByName('YingFuMoney').Value); ClientDataSet3.Delete; end else begin ClientDataSet3.Last; end; end else //���Ӧ�������ڸ����� begin if StrToFloat(FFKMoney)=0 then begin ClientDataSet3.Last; end; if GetLSNo(ADOQueryCmd,maxno,'YH','YF_Money_CR_HX',4,1)=False then begin Result:=False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('ȡ������ˮ��ʧ��!','��ʾ',0); Exit; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR_HX where 1<>1'); Open; end; with ADOQueryCmd do begin Append; FieldByName('YHID').Value:=Trim(maxno); FieldByName('YFID').Value:=Trim(ClientDataSet3.fieldbyname('YFID').AsString); FieldByName('FKID').Value:=Trim(FKID); FieldByName('HXMoney').Value:=FFKMoney; FieldByName('Filler').Value:=Trim(DName); Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_CR Set YiFuMoney=(select isnull(Sum(HXMoney),0) from YF_Money_CR_HX A where A.YFID=YF_Money_CR.YFID)'); sql.Add(' where YFID='''+Trim(ClientDataSet3.fieldbyname('YFID').AsString)+''''); ExecSQL; end; FFKMoney:='0'; ClientDataSet3.Delete; ClientDataSet3.Last; end; end; end; Result:=True; end; end; procedure TfrmPKFKList.ToolButton5Click(Sender: TObject); var CRID:String; begin if cxTabControl1.TabIndex<>1 then Exit; if Order_Main.IsEmpty then Exit; if Order_Main.Locate('SSel',True,[])=False then begin Application.MessageBox('û��ѡ������!','��ʾ',0); Exit; end; {Order_Main.DisableControls; with Order_Main do begin First; while not Eof do begin if Order_Main.FieldByName('SSel').AsBoolean=True then begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YF_Money_PaiKuan '); sql.Add(' where PKID='''+Trim(Order_Main.fieldbyname('PKID').AsString)+''''); sql.Add(' and OKFlag=1 '); Open; end; if ADOQueryTemp.IsEmpty=False then begin Order_Main.EnableControls; Application.MessageBox('��ȷ�ϣ����ܳ���!','��ʾ',0); Exit; end; end; Next; end; end; Order_Main.EnableControls;} if Application.MessageBox('ȷ��Ҫִ�г���������','��ʾ',32+4)<>IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; Order_Main.DisableControls; with Order_Main do begin First; while Order_Main.Locate('SSel',True,[]) do begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from YF_Money_CR where YFID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''''); Open; end; CRID:=Trim(ADOQueryTemp.fieldbyname('CRID').AsString); with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update YF_Money_PaiKuan Set FKTime=NUll,FKPerson=Null'); if Trim(Order_Main.fieldbyname('BZType').AsString)='����' then begin sql.Add(',HuiLv=Null '); end; sql.Add(',FKNote=Null,FKID=Null,FKMoney=Null '); sql.Add(' where PKID='''+Trim(Order_Main.fieldbyname('PKID').AsString)+''''); ExecSQL; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('delete YF_Money_CR where YFID='''+Trim(Order_Main.fieldbyname('FKID').AsString)+''''); ExecSQL; end; if Trim(CRID)<>'' then begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('UPdate YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)'); sql.Add(' where CRID='+CRID); ExecSQL; end; end; Order_Main.Delete; end; end; ADOQueryCmd.Connection.CommitTrans; Order_Main.EnableControls; except Order_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('�����쳣!','��ʾ',0); end; end; procedure TfrmPKFKList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Order_Main.IsEmpty then exit; if Trim(Order_Main.fieldbyname('BZType').AsString)='�����' then begin v1Huilv.Options.Editing:=False; end else begin v1Huilv.Options.Editing:=True; end; end; end.