⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hzunit.pas

📁 书籍类别(种类编号
💻 PAS
字号:
unit HZUnit;

interface

uses
  Classes, Windows, SysUtils, Dialogs, ADODB ;

type
  WaitPas3 = class(TThread)
  Filename  : String;   //往线程中注入备份或还原的文件名
  Messages  : String;   //显示信息
  IDs1       : Integer;   //识别应该执行什么样的操作
  ADOQ      : TADOQuery;
  //备份文件
  function BackUpData:Boolean;
  //还原文件
  function RevertData:Boolean;
  //关闭等待窗口
  procedure CloseWaitWindow;
  //更新等待窗口信息
  procedure PostMessgesToWaitWindow;
  private
    { Private declarations }
  protected
    procedure Execute; override;
  public
    constructor Create(LoadID:integer);
  end;

implementation

uses wait,DBM;

{ WaitPas }

function WaitPas3.BackUpData:Boolean;
var
BeAudit_h,
AfAudit_h,
AfAuditPay_h,
Payed_h,
BePayed_h,
ThisYear_h,
Remain_h,
benyue_h,
ConNumber_h:string;
fill:string;
begin
Messages:='正在进行财务汇总,请稍候……';
Synchronize(PostMessgesToWaitWindow);

with DM do try
   BeAudit_h:='';
AfAudit_h:='';
AfAuditPay_h:='';
Payed_h:='0';
BePayed_h:='0';
ThisYear_h:='0';
Remain_h:='0';
benyue_h:='0';
fill:='';
//WaitForm.ShowModal;
//with DM do
//    begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select ConNumber from contract');
    ADOQuery1.Open;  //打开合同表
    while not ADOQuery1.Eof do
    begin
    BeAudit_h:='';
    AfAudit_h:='';
    AfAuditPay_h:='';
    Payed_h:='0';
    BePayed_h:='0';
    ThisYear_h:='0';
    Remain_h:='0';
    fill:='';
    connumber_h:=ADOQuery1.FieldValues['ConNumber'];//合同号
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select daifang,remain from detail where ConNumber='''+connumber_h+''' order by id');
    ADOQuery_h.Open;
    if ADOQuery_h.RecordCount=0 then
    begin
    gengxin_h.Close;
    gengxin_h.SQL.Clear;
    gengxin_h.SQL.Add('update contract set AfAudit='''+AfAudit_h+''',BeAudit='''+BeAudit_h+''',AfAuditPay='''+AfAuditPay_h+''',Payed='''+Payed_h+''',BePayed='''+BePayed_h+''',ThisYear='''+ThisYear_h+''',Remain='''+Remain_h+''',Fulfill='''+fill+''',benyue='''+benyue_h+''' where connumber='''+ConNumber_h+'''') ;
    gengxin_h.ExecSQL;  //更新合同表为空
    ADOQuery1.Next;
    continue;
    end;
    
   
    ADOQuery_h.Last;
    remain_h:=ADOQuery_h.FieldValues['remain'];     //余额

    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select sum(daifang) as daisum2 from detail where marking=1 and ConNumber='''+connumber_h+'''');
    ADOQuery_h.Open;
   // ADOQuery_h.First;
    BeAudit_h:=ADOQuery_h.FieldValues['daisum2'];   //审计前金额

    
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select jiefang from detail where marking=0 and ConNumber='''+connumber_h+''' and addDate<'''+formatdatetime('yyyy',now)+'''');
    ADOQuery_h.Open;
    if ADOQuery_h.RecordCount>0 then begin
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select sum(jiefang) as jiefang_h from detail where marking=0 and ConNumber='''+connumber_h+''' and addDate<'''+formatdatetime('yyyy',now)+'''');
    ADOQuery_h.Open;
    BePayed_h:=ADOQuery_h.FieldValues['jiefang_h'];//以前年度已付款
    end else
    BePayed_h:='0';//以前年度已付款

    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select jiefang from detail where marking=0 and ConNumber='''+connumber_h+''' and addDate>='''+formatdatetime('yyyy-MM-01',now)+'''');
    ADOQuery_h.Open;
    if ADOQuery_h.RecordCount>0 then begin
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select sum(jiefang) as jiefang_h from detail where marking=0 and ConNumber='''+connumber_h+''' and addDate>='''+formatdatetime('yyyy-MM-01',now)+'''');
    ADOQuery_h.Open;
    Benyue_h:=ADOQuery_h.FieldValues['jiefang_h'];//本月付款
    end else
    Benyue_h:='0';//本月付款  



    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select jiefang from detail where ConNumber='''+connumber_h+''' and marking=0');
    ADOQuery_h.Open;
    if ADOQuery_h.RecordCount>0 then begin
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select sum(jiefang) as jiefang_h  from detail where ConNumber='''+connumber_h+''' and marking=0' );
    ADOQuery_h.Open;
    Payed_h:=ADOQuery_h.FieldValues['jiefang_h'];//已付款小计
    end else
    Payed_h:='0';//已付款小计
    //ThisYear_h:=floattostr(strtofloat(Payed_h)-strtofloat(BePayed_h));//本年度已付款
    ThisYear_h:=Format('%8.2f',[strtofloat(Payed_h)-strtofloat(BePayed_h)]);
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select daifang from detail where marking=2 and ConNumber='''+connumber_h+'''');
    ADOQuery_h.Open;
    if ADOQuery_h.RecordCount>0 then begin
    ADOQuery_h.Close;
    ADOQuery_h.SQL.Clear;
    ADOQuery_h.SQL.Add('select sum(daifang) as ssjjhh from detail where marking=2 and ConNumber='''+connumber_h+'''');
    ADOQuery_h.Open;


    AfAuditPay_h:=ADOQuery_h.FieldValues['ssjjhh'];//审计后价款
    AfAudit_h:=BeAudit_h;//审计前给审计后
    BeAudit_h:='';//审计前为空
    fill:=copy(floattostr((strtofloat(Payed_h)/strtofloat(AfAuditPay_h))*100),0,4)+'%';//履行合同情况
    end else begin
    fill:=copy(floattostr((strtofloat(Payed_h)/strtofloat(BeAudit_h))*100),0,4)+'%';//履行合同情况
    AfAuditPay_h:='';//如果没有审计后价款就为空
    AfAudit_h:='';
    end;
    gengxin_h.Close;
    gengxin_h.SQL.Clear;
    gengxin_h.SQL.Add('update contract set AfAudit='''+AfAudit_h+''',BeAudit='''+BeAudit_h+''',AfAuditPay='''+AfAuditPay_h+''',Payed='''+Payed_h+''',BePayed='''+BePayed_h+''',ThisYear='''+ThisYear_h+''',Remain='''+Remain_h+''',Fulfill='''+fill+''',benyue='''+benyue_h+''' where connumber='''+ConNumber_h+'''') ;
    gengxin_h.ExecSQL;  //更新合同表
    ADOQuery1.Next;
    end;
    //showmessage('            更新成功!!!!');
     if  ADOQuery2.Active then begin
         ADOQuery2.Close;
         ADOQuery2.Open;
         end;
   // end;
   Result:=true;
except
   Result:=false;
end;

end;

procedure WaitPas3.CloseWaitWindow;
begin
WaitForm.Close;
end;

constructor WaitPas3.Create(LoadID:integer);
begin
//初始化进程
IDs1 := LoadID;


inherited Create(False);

end;

procedure WaitPas3.Execute;
var IsSucceed : Boolean;
begin
IsSucceed:=false;
case IDs1 of
   1  :   IsSucceed := BackUpData; //备份
   2  :   IsSucceed := RevertData; //还原
end;
  Synchronize(CloseWaitWindow);
 if IsSucceed then
     Messagebox(0,'财务数据汇总操作成功!','提示',MB_OK+MB_ICONINFORMATION+MB_TOPMOST)
  ELSE ShowMessage('操作失败!!');
  { Place thread code here }
end;

procedure WaitPas3.PostMessgesToWaitWindow;
begin
WaitForm.RzLabel1.Caption:=Messages;
end;

function WaitPas3.RevertData: Boolean;
begin
Messages:='正在还原数据库,请稍候……';
Synchronize(PostMessgesToWaitWindow);
with ADOQ do try
   Close;
   SQL.Clear;
   sql.Add('use master');
   sql.Add('ALTER DATABASE bargain SET OFFLINE WITH ROLLBACK IMMEDIATE');
   sql.Add('RESTORE DATABASE bargain FROM DISK ='''+(FileName)+''' with FILE=1,RECOVERY,REPLACE');
   sql.Add('ALTER DATABASE bargain SET ONLINE WITH ROLLBACK IMMEDIATE');
   SQL.Add('Use bargain');
   Prepared;
   execsql;
   Result:=true;
except
   Result:=false;
end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -