首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

定时导库出现有关问题!

2012-02-26 
定时导库出现问题!!C/C++ code if(Now() StrToDateTime(DateToStr(Date())+ 03:00:00)){rzstspn1-Ca

定时导库出现问题!!

C/C++ code
 if(Now() == StrToDateTime(DateToStr(Date())+" 03:00:00"))       {     rzstspn1->Caption="数据库开始操作!!";    //控制状态栏     rzstspn1->Refresh();     String sysdate=" a.xtrq = '"+FormatDateTime("yyyy-mm-dd",Date())+"'  ";  //定义要导的数据的时间,     String sysdate1=" xtrq = '"+FormatDateTime("yyyy-mm-dd",Date())+"'  ";     Translate(Application,sysdate,sysdate1);     room->qry_bdsjb_ls->Close();     room->qry_bdsjb_ls->SQL->Clear();     room->qry_bdsjb_ls->SQL->Add("delete from lrkh_bdsjb_ls"); //将零时表的数据删除     room->qry_bdsjb_ls->ExecSQL();     room->qry_bdsjb_ls->Close();     rzstspn1->Caption="数据库空闲!!";     rzstspn1->Refresh();     mm=0;  } else  {    rzstspn1->Caption="数据库空闲!!";    rzstspn1->Refresh();  }


我的目的是在每天的凌晨3点导数据,从sql库导到ora库里,Translate(Application,sysdate,sysdate1)是自定义的一个函数,功能就是导数据,然后将零时表数据删除
我是在Ttimer控件里写的,可是有的晚上就导了 有的晚上就不导,这让人很郁闷,请指点一下问题所在!

[解决办法]
自己多该几次 机器的时间 多测试一下
看看到底进来了没? 或者在哪里挂了?
[解决办法]
试试吧interval设置小一点,比如200到300,然后再代码中sleep一段时间呢
[解决办法]
if(Now() == StrToDateTime(DateToStr(Date())+" 03:00:00"))
1、这个时间点是否执行到这条语句? 设置 Ttimer 的时间间隔最好为 999
2、电脑时间格式是否设置成英文,如不设置请给以上时间FormatDateTime

[解决办法]
我估计问题也是出现在这里,可能你的任务较重,占用较多时间,或者你的Timer设置的时间间隔太长,导致跳过了03:00:00这个时间,例如上一次判断是02:59:59,如果你设置时间间隔为2秒,则下一次判断就到03:00:01,所以if语句就无法得到true
if(Now() == StrToDateTime(DateToStr(Date())+" 03:00:00"))

[解决办法]
一定要在3點整嗎??如果不是可以加個條件吧,第一次時間超過3點時就觸發timer事件,然后以后的3點到4點就停,到4點時再開.
C/C++ code
    static bool bTurn=true;    if(Now().FormatString("hh")=="03" && bTurn==true)    {        bTurn=false;        rzstspn1->Caption="数据库开始操作!!";    //控制状态栏        rzstspn1->Refresh();        String sysdate=" a.xtrq = '"+FormatDateTime("yyyy-mm-dd",Date())+"'  ";  //定义要导的数据的时间,        String sysdate1=" xtrq = '"+FormatDateTime("yyyy-mm-dd",Date())+"'  ";        Translate(Application,sysdate,sysdate1);        room->qry_bdsjb_ls->Close();        room->qry_bdsjb_ls->SQL->Clear();        room->qry_bdsjb_ls->SQL->Add("delete from lrkh_bdsjb_ls"); //将零时表的数据删除        room->qry_bdsjb_ls->ExecSQL();        room->qry_bdsjb_ls->Close();        rzstspn1->Caption="数据库空闲!!";        rzstspn1->Refresh();        mm=0;    }    else if(Now().FormatString("hh")=="04")    {        bTurn=true;        rzstspn1->Caption="数据库空闲!!";        rzstspn1->Refresh();    }
[解决办法]
改一下上面的代碼:
C/C++ code
  static bool bTurn=true;    if(Now().FormatString("hh")=="03" && bTurn==true)    {        bTurn=false;        rzstspn1->Caption="数据库开始操作!!";    //控制状态栏        rzstspn1->Refresh();        String sysdate=" a.xtrq = '"+FormatDateTime("yyyy-mm-dd",Date())+"'  ";  //定义要导的数据的时间,        String sysdate1=" xtrq = '"+FormatDateTime("yyyy-mm-dd",Date())+"'  ";        Translate(Application,sysdate,sysdate1);        room->qry_bdsjb_ls->Close();        room->qry_bdsjb_ls->SQL->Clear();        room->qry_bdsjb_ls->SQL->Add("delete from lrkh_bdsjb_ls"); //将零时表的数据删除        room->qry_bdsjb_ls->ExecSQL();        room->qry_bdsjb_ls->Close();        mm=0;    }    else if(Now().FormatString("hh")=="04")    {        bTurn=true;    }    rzstspn1->Caption="数据库空闲!!";    rzstspn1->Refresh(); 

热点排行