function Tfrmain.CompressRePairMDB: Boolean;
var
  dao:OLEVariant;
  sTempDBname:string;
begin
   result:=true;
   screen.Cursor:=crHourGlass;
   stempdbname:=changefileext(fn,'.tmp');
   if fileExists(stempDBName) then DeleteFile(sTempDBName);
   dao:=CreateOLEObject('DAO.DBEngine.36');   try
      try
        dao.compactDatabase(fn,sTempDBName,'',0,';pwd=123  ');
        DeleteFile(fn);
        RenameFile(sTempDBName,fn);
      except
         on e:Exception do begin
            result:=False;
            MessageDlg('数据库压缩修复失败!!'+#13+#13+e.Message,mtError,[mbOK],0);
         end;
      end;
   finally
      dao:=Unassigned;
   end;
   screen.Cursor:=crDefault;
end;请问
1:OLEVariant  这是什么类型?资料从哪儿找?DELPHI找不了该资料!
2:dao:=CreateOLEObject('DAO.DBEngine.36');完成会么功能,各参数意义是什么?
3: dao.compactDatabase(fn,sTempDBName,'',0,';pwd=123  ');完成会么功能,各参数意义是什么?
4:on e:Exception do  这是什么语句?
5:dao:=Unassigned;完成会么功能
上述是我在网上找到的一个完成压缩数据库功能的程序例子,本人想成同上述功能(用的是(SQL做数据库.数据库无密码),但一运行到dao.compactDatabase(fn,sTempDBName,'',0,';pwd=123  ');时提示找不到文件!请教各位问题在哪,有没有更好的代码,最好有分析?谢谢!

解决方案 »

  1.   

    1.OLE变体型变量,长用作创建OLE对象,比如创建ADODB 、EXCEL、DAO等等。
    2.就是你上便说的那个变量,创建的是一个DAO数据链接引擎,DAO是微软早期的数据链接引擎,现在基本上被ADO所取代了,不怎么用,所以你可能不了解,如果需要去看看VB的书,上边有介绍。
    3.DAO的一些操作方式,类如ADO的操作.
    4.为了捕捉异常而创建的异常类E对象,长用
    TRY
      {---}
    EXCEPT
      ON E:EXCEPTION DO
         SHOWMESSAGE(E.MESSAGE);
    END;
    5. 释放变量 和 DAO:=NIL;一样。