定时导库出现问题!!
- 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();