線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1644
推到 Plurk!
推到 Facebook!

有關Access資料庫修复程式的說明

答題得分者是:ha0009
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-18 22:58:46 IP:63.84.xxx.xxx 未訂閱
請教各位前輩﹒    小弟日前在看lee前輩發表的有關Access資料庫修复程式﹐能否勞煩熟悉此程式的前輩給小弟寫一下程式碼相關的說明﹖程式碼如下﹕
Uses
  JRO_TLB;    const
  Provider = 'Provider=Microsoft.Jet.OLEDB.4.0;';
  SrcMDB   = 'c:\db1.mdb';
  DstMDB   = 'c:\db2.mdb';    procedure TForm1.Button1Click(Sender: TObject);
var
  JetEng : JetEngine;
  Src    : WideString;
  Dest   : WideString;
  SystemINI:TIniFile;
  ApplicationPath,fn,DataBase_AliasName:string;
  Reg: TRegistry;
  mdbfilename,mdbfilename2,mdbfilename3:string;
  ok:boolean;
begin
  form1.caption:='修護中...';
  mdbfilename:=edit1.text;
  application.ProcessMessages;
  mdbfilename2:=changefileext(mdbfilename,'_2.MDB');
  mdbfilename3:=changefileext(mdbfilename,'_backup.MDB');
  JetEng := CoJetEngine.Create;
  Src    := Provider   'Data Source='   mdbfilename;
  Dest   := Provider   'Data Source='   mdbfilename2;
  try
    If FileExists(DstMDB) Then
      DeleteFile(DstMDB);
    JetEng.CompactDatabase(Src, Dest);
  finally
    If FileExists(mdbfilename3) Then
      DeleteFile(mdbfilename3);
    renamefile(mdbfilename,mdbfilename3);
    renamefile(mdbfilename2,mdbfilename);
    form1.caption:='修護成功...';
    JetEng := Nil;
    showmessage('●●●修護成功●●●');
  end;
end;
不甚感激﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-01 15:08:29 IP:61.30.xxx.xxx 未訂閱
JRO 修復好的資料庫不能直接覆蓋原始的資料庫,所以必須 先將修復好的檔案存成其他的檔名,再將原檔案移除或更名 然後再將新檔改成原始檔的名稱。    不知道你到底哪裡不瞭,所以青菜說一下,看看是否是你想要的答案。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-01 17:41:08 IP:63.84.xxx.xxx 未訂閱
感謝ha0009版主﹐好久沒有見您了說 這段程式碼中﹐小弟不明白的 class="code">Uses JRO_TLB; const Provider = 'Provider=Microsoft.Jet.OLEDB.4.0;'; SrcMDB = 'c:\db1.mdb'; DstMDB = 'c:\db2.mdb'; procedure TForm1.Button1Click(Sender: TObject); var JetEng : JetEngine; Src : WideString; Dest : WideString; SystemINI:TIniFile; ApplicationPath,fn,DataBase_AliasName:string; Reg: TRegistry; //請教一下這幾個變數的形態解釋和其使用方法 mdbfilename,mdbfilename2,mdbfilename3:string; ok:boolean; begin form1.caption:='修護中...'; mdbfilename:=edit1.text; application.ProcessMessages; mdbfilename2:=changefileext(mdbfilename,'_2.MDB'); mdbfilename3:=changefileext(mdbfilename,'_backup.MDB'); JetEng := CoJetEngine.Create; Src := Provider 'Data Source=' mdbfilename; Dest := Provider 'Data Source=' mdbfilename2; //這兩句對應了上面的變數宣告﹐那它的完整格式是怎么的﹖ try If FileExists(DstMDB) Then DeleteFile(DstMDB); JetEng.CompactDatabase(Src, Dest); finally If FileExists(mdbfilename3) Then DeleteFile(mdbfilename3); renamefile(mdbfilename,mdbfilename3); renamefile(mdbfilename2,mdbfilename); form1.caption:='修護成功...'; JetEng := Nil; showmessage('●●●修護成功●●●'); end; end; ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-02 14:17:39 IP:61.30.xxx.xxx 未訂閱
JetEngine 
  JRO處理数据库压缩和修理專用物件。使用下列方式取得物件實體。
 JetEng := CoJetEngine.Create;      使用下列方式釋放物件
  JetEng := Nil;      壓縮資料庫所使用的方法。
 JetEng.CompactDatabase(來源連接字串, 完成的資料庫儲存的連接字串);    WideString

  The WideString type represents a dynamically allocated string of 16-bit 
Unicode characters. In most respects it is similar to AnsiString. On Win32, 
WideString is compatible with the COM BSTR type. Borland development tools 
have support features that convert AnsiString values to WideString, but you 
may need to explicitly cast or convert your strings to WideString.    TRegistry
  操作 登錄(Register) 的物件。
 RootKey 必須設定,詳細請查 Help    Application.ProcessMessages;
  怕程序佔用了cpu的處理權太久,導致程式無法處理其他的訊息。用此命令轉讓控制權,
讓作業系統處理其他訊息。    連接字串格式
  如同 Connection 的連接字串一樣,除了下面的基本字串外,上有其他的命令,你在找找吧。
  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[來源路徑]"
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-02 14:25:48 IP:63.84.xxx.xxx 未訂閱
< >謝謝 > 小弟慢慢學習中< > <>===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-11-22 17:06:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!