procedure TMail.Timer1Timer(Sender: TObject);
var
Filename:string;
dbe:OleVariant;
te,tp:string;
begin
Filename:=Formatdatetime('yyyy年mm月dd日',now)+Formatdatetime('hh',inchour(now,-2))+'点.tbf';
te:=extractfiledir(application.exename)+'\data\ppsy.mdb' ;
tp:=extractfiledir(application.exename)+'\databak\'+formatdatetime('yyyy年mm月dd日hh点',now)+'.tbf'; if (bak=1) and (formatdatetime('nn',now)='00') then
dbe:=CreateOleObject('dao.dbengine.36');
dbe.CompactDatabase(te,tp,'',0,'');//实用时加密码;pwd=007408 if (bak=30) and (formatdatetime('nn',now)='30') then
dbe:=CreateOleObject('dao.dbengine.36');
dbe.CompactDatabase(te,tp,'',0,'');//实用时加密码;pwd=007408Deletefile(ExtractFilePath(Application.ExeName)+'databak\'+Filename);
end;编译顺利通过,但执行时出错了.
var
Filename:string;
dbe:OleVariant;
te,tp:string;
begin
Filename:=Formatdatetime('yyyy年mm月dd日',now)+Formatdatetime('hh',inchour(now,-2))+'点.tbf';
te:=extractfiledir(application.exename)+'\data\ppsy.mdb' ;
tp:=extractfiledir(application.exename)+'\databak\'+formatdatetime('yyyy年mm月dd日hh点',now)+'.tbf'; if (bak=1) and (formatdatetime('nn',now)='00') then
dbe:=CreateOleObject('dao.dbengine.36');
dbe.CompactDatabase(te,tp,'',0,'');//实用时加密码;pwd=007408 if (bak=30) and (formatdatetime('nn',now)='30') then
dbe:=CreateOleObject('dao.dbengine.36');
dbe.CompactDatabase(te,tp,'',0,'');//实用时加密码;pwd=007408Deletefile(ExtractFilePath(Application.ExeName)+'databak\'+Filename);
end;编译顺利通过,但执行时出错了.
解决方案 »
- 连号球走势---算法问题
- 在线等
- 请问*.dat是什么东东?
- 为什么有时候在onGreate事件中不能初始化一些东西啊?为什么呢?
- help sos!
- 菜鸟提问
- 传址和传值的两个过程有什么区别呀,可以举个例子来认识下吗mpro a(const a:TA);也是传址吗,可以也给了例子认识下吗
- 请问如何使用下载来的Delphi控件
- 用TQuery执行查询,如何中断查询?
- 高手帮忙关于数据库的图象输入的问题,很着急
- 刷卡机 刷完卡后执行某个操作 在什么事件下写?
- 求助:ListView_GetSubItemRect 在Delphi中编译报错:Undeclared identifier: 'ListView_GetSubItemRect'
var
oleObject: OleVariant;
srcQAK, tmpQAK, bakQAK: string;
begin
Screen.Cursor := crSQLWait; srcQAK := _DIR_APP + 'QAK.MDB';
bakQAK := _DIR_APP + 'QAK_BAK.MDB';
tmpQAK := _DIR_APP + 'QAK_Tmp.MDB';
if FileExists(bakQAK) then DeleteFile(bakQAK);
CopyFile(PChar(srcQAK),PChar(bakQAK),False); // 做个备份,用语压缩出错误时恢复 try
try
oleObject:= createoleobject('JRO.JetEngine');
oleObject.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + srcQAK + ';Jet OLEDB:Database Password=' + _PSW_ACCESS + ';','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + tmpQAK + ';Jet OLEDB:Database Password=' + _PSW_ACCESS + ';'); Sleep(2000); // 延时 2 秒
DeleteFile(srcQAK);
RenameFile(tmpQAK,srcQAK);
Result := True;
except
on EE: Exception do begin
Application.MessageBox(PAnsiChar('整理数据库文件失败,错误: ' + #13#13#10 + EE.Message),'YGQA 提示',16);
Result := False;
end;
end;
finally
oleObject := UnAssigned;
end; Screen.Cursor := crDefault;
end;
结果就造成了不管判断的条件是否成立,dbe.CompactDatabase(te,tp,'',0,'')总是会被执行,而执行时有可能dbe并未实例化。 ......
if (bak=1) and (formatdatetime('nn',now)='00') then
begin
dbe:=CreateOleObject('dao.dbengine.36');
dbe.CompactDatabase(te,tp,'',0,'');//实用时加密码;pwd=007408
end; if (bak=30) and (formatdatetime('nn',now)='30') then
begin
dbe:=CreateOleObject('dao.dbengine.36');
dbe.CompactDatabase(te,tp,'',0,'');//实用时加密码;pwd=007408
end; Deletefile(ExtractFilePath(Application.ExeName)+'databak\'+Filename);
end;