unit U_JXFPHXList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu; type TfrmJXFPHXList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ToolButton1: TToolButton; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; Label3: TLabel; FactoryName: TEdit; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; Label2: TLabel; Label6: TLabel; begdate: TDateTimePicker; Enddate: TDateTimePicker; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; v2Column1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Ssel: TcxGridDBColumn; Label4: TLabel; IVNO: TEdit; Label5: TLabel; ADOQueryMain: TADOQuery; ToolButton3: TToolButton; v2Column6: TcxGridDBColumn; v2KPNo: TcxGridDBColumn; v2Column7: TcxGridDBColumn; v2Column8: TcxGridDBColumn; v2Column9: TcxGridDBColumn; Label1: TLabel; KHConno: TEdit; Label7: TLabel; v2Column10: TcxGridDBColumn; v2Column11: TcxGridDBColumn; FromId: TEdit; ToId: TEdit; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure FromIdKeyPress(Sender: TObject; var Key: Char); private { Private declarations } procedure InitGrid(); public { Public declarations } RKFlag, FCYID: string; end; var frmJXFPHXList: TfrmJXFPHXList; implementation uses U_DataLink, U_RTFun, U_ZDYHelp; {$R *.dfm} procedure TfrmJXFPHXList.InitGrid(); var WSql: string; begin WSql := SGetFilters(Panel1, 1, 2); if Trim(WSql) <> '' then WSql := ' and ' + WSql; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; Filtered := False; sql.Add(' select A.* '); sql.Add(' from V_CW_HX_JXFP A where 1=1 '); sql.Add(' and A.Filldate>=''' + formatdateTime('yyyy-MM-dd', begdate.DateTime) + ''' '); sql.Add(' and A.Filldate<''' + formatdateTime('yyyy-MM-dd', enddate.DateTime + 1) + ''' '); sql.Add(WSql); Open; end; SCreateCDS(ADOQueryMain, CDS_HZ); SInitCDSData(ADOQueryMain, CDS_HZ); finally ADOQueryMain.EnableControls; end; end; procedure TfrmJXFPHXList.FormDestroy(Sender: TObject); begin frmJXFPHXList := nil; end; procedure TfrmJXFPHXList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmJXFPHXList.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption, Tv2, '财务管理'); Close; end; procedure TfrmJXFPHXList.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption, Tv2, '财务管理'); Enddate.DateTime := SGetServerDate(ADOQueryTemp); begdate.DateTime := Enddate.DateTime - 7; InitGrid(); end; procedure TfrmJXFPHXList.FromIdKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmJXFPHXList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmJXFPHXList.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); end; procedure TfrmJXFPHXList.FormCreate(Sender: TObject); begin cxGrid2.Align := AlClient; end; procedure TfrmJXFPHXList.ToolButton3Click(Sender: TObject); begin if CDS_HZ.IsEmpty then exit; if CDS_HZ.Locate('ssel', true, []) = false then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; ADOQueryCmd.Connection.BeginTrans; try with CDS_HZ do begin DisableControls; first; while not eof do begin if Fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add(' update CW_Invoice SET FPhxNum=A.FPhxNum - B.num '); sql.Add(' from CW_Invoice A '); sql.Add(' inner join CW_HX_Log B on B.FromId=A.IVID '); sql.Add(' where B.HXID=' + quotedstr(trim(CDS_HZ.fieldbyname('HXID').AsString))); sql.Add(' update CW_Money_CR SET FPhxNum=A.FPhxNum - B.num '); sql.Add(' from CW_Money_CR A '); sql.Add(' inner join CW_HX_Log B on B.ToId=A.CWID '); sql.Add(' where B.HXID=' + quotedstr(trim(CDS_HZ.fieldbyname('HXID').AsString))); sql.Add(' update CW_Invoice SET HXStatus=''0'' '); sql.Add(' from CW_Invoice A '); sql.Add(' inner join CW_HX_Log B on B.FromId=A.IVID '); sql.Add(' where B.HXID=' + quotedstr(trim(CDS_HZ.fieldbyname('HXID').AsString))); sql.Add(' and FPhxNum=0 '); sql.Add(' update CW_Money_CR SET HXStatus=''0'' '); sql.Add(' from CW_Money_CR A '); sql.Add(' inner join CW_HX_Log B on B.ToId=A.CWID '); sql.Add(' where B.HXID=' + quotedstr(trim(CDS_HZ.fieldbyname('HXID').AsString))); sql.Add(' and FPhxNum=0 '); sql.Add(' delete from CW_HX_Log '); sql.Add(' where HXID=' + quotedstr(trim(CDS_HZ.fieldbyname('HXID').AsString))); sql.Add(' update CW_Money_CR '); sql.Add('set IVNO=SUBSTRING(CAST((select distinct '','' +X.IVNo from '); sql.Add('(select IVNo from CW_Invoice X inner join CW_HX_Log Y on X.IVId=Y.FromId where Y.ToId=CW_Money_CR.CWID and Type=''JXFP'') X '); sql.Add(' for xml path('''') ) AS VARCHAR(100)) , 2, 100) '); sql.Add(' where CWID=' + quotedstr(trim(CDS_HZ.fieldbyname('ToId').AsString))); execsql; end; end; next; end; First; EnableControls; end; ADOQueryCmd.Connection.CommitTrans; application.MessageBox('撤销成功!', '提示信息'); TBRafresh.Click; except ; ADOQueryCmd.Connection.RollbackTrans; CDS_HZ.EnableControls; application.MessageBox('撤销失败!', '提示信息', 0); end; end; end.