壓縮Access資料庫有一點點問題麻煩大大一下 |
答題得分者是:AndrewK
|
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
小弟對下面的方法有一些問題,那就是
TCOM_DBEngine Engine = new CoDBEngine->Create();是要增加什麼物件才能用 我只有增加以下物件而已 #include #include [code cpp] class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; [/code] 能否請大大提供我一些解答的範例 如果提供範例,也請大大能否透露大大你用了那些物件(因為小弟是新手) 謝謝大大,因為做小弟做了很久還是無法做出來,如果大大你能提供解答我一定會非常的感謝大大你。 謝謝! 壓縮Access資料庫的方法 先包含檔 #include [code cpp] void __fastcall TfrmMain::btnCompactClick(TObject *Sender) { //實現方法 WideString wsOldDB,wsNewDB; TCOM_DBEngine Engine = new CoDBEngine->Create(); //獲取檔資料庫的路徑 wsOldDB = "D:\\Before_compact.mdb"; wsNewDB "D:\\After_compact.mdb"; Engine->CompactDatabase(p1.c_bstr(),p2.c_bstr()); delete Engine; } [/code] [code cpp] // 用ADO壓縮Access2000庫 #include "utilcls.h" void CompactDatabase(String f1,String psw1,String f2,String psw2) { String Provider1="Provider=Microsoft.Jet.OLEDB.4.0" ";Data Source=" f1 ";Jet OLEDB:Database Password=" psw1; String Provider2="Provider=Microsoft.Jet.OLEDB.4.0" ";Data Source=" f2 ";Jet OLEDB:Database Password=" psw2; Variant Adoobj=Variant::CreateObject("JRO.JetEngine"); Adoobj.OleProcedure("CompactDatabase",Provider1,Provider2); Adoobj.Clear(); } void __fastcall TForm1::Button1Click(TObject *Sender) { String f1="yhecdagl1.mdb"; // 源庫1 String psw1="yhecdagl"; // 密碼1 String f2="yhecdagl2.mdb"; // 新目的庫2 String psw2="yhecdagl2"; // 新密碼2 String dir=ExtractFilePath(Application->ExeName); f1=dir f1; f2=dir f2; if (FileExists(f2)) // 不允許目的庫存在 DeleteFile(f2); CompactDatabase(f1,psw1,f2,psw2); ShowMessage("Finished"); } [/code] -------------------------------------------------------------------------------- 以下範例展示了壓縮 c:\data\northwind.mdb 資料庫,壓縮後的資料庫 會建立於 c:\data\newnorth.mdb。在使用下列範例前,你必須 import JRO type library:開啟一個新的專案,點選 Project | Import Type Library, 選擇 Micro$oft Jet and Replication Objects 2.1 Library (Version 2.1),然後按 Create 便可以產生 JRO_TLB.pas。 [code delphi] Uses JRO_TLB; const Provider = 'Provider=Microsoft.Jet.OLEDB.4.0;'; SrcMDB = 'c:\data\northwind.mdb'; DstMDB = 'd:\data\newnorth.mdb'; procedure TForm1.Button1Click(Sender: TObject); var JetEng : JetEngine; Src : WideString; Dest : WideString; begin JetEng := CoJetEngine.Create; Src := Provider 'Data Source=' SrcMDB; Dest := Provider 'Data Source=' DstMDB; try If FileExists(DstMDB) Then DeleteFile(DstMDB); JetEng.CompactDatabase(Src, Dest); finally JetEng := Nil; end; end; [/code] 及參考了大大所提供的做好樣本http://delphi.ktop.com.tw/board.php?cid=17&fid=115&tid=17920 -謝謝大大的熱心回覆
------
-謝謝大大熱心的回覆!謝謝! |
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
我只有用過 ADO 壓縮 Access 資料庫
而您提到的問題 TCOM_DBEngine Engine = new CoDBEngine->Create(); 是用什麼物件 不是就 TCOM_DBEngine 物件嗎???? 如果是要問CoDBEngine->Create(); Create方法要傳入什麼東東 他的Creaet方法是可以不傳入東西的 沒測試過,急著出門,給你的一些建議啦 ^ ^
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
編輯記錄
AndrewK 重新編輯於 2008-07-31 02:06:20, 註解 無‧
|
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
以下連結是你所貼的連結
http://delphi.ktop.com.tw/board.php?cid=17&fid=115&tid=17920 你將裡面 Button1 的 Button1Click 函式,寫成傳入DB Path 的函式 在將 JRO_TLB.pas (連結裡所下載的檔案有) 加入 Delphi 的 Search Path 如此即可
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
可不可以請大大再詳加以說明因為我還是聽不太懂謝謝大大的熱心回覆
===================引 用 AndrewK 文 章=================== 以下連結是你所貼的連結 http://delphi.ktop.com.tw/board.php?cid=17&fid=115&tid=17920 你將裡面 Button1 的 Button1Click 函式,寫成傳入DB Path 的函式 在將 JRO_TLB.pas (連結裡所下載的檔案有) 加入 Delphi 的 Search Path 如此即可
------
-謝謝大大熱心的回覆!謝謝! |
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
我做出來的壓縮程式
但是有一個問題那就是當程式跑到這一行delete Engine;的時候會出現問題請問是為什麼 請大大給一點提示 謝謝! [code cpp] #include #pragma link "DAO_2K" void __fastcall TForm1::Button1Click(TObject *Sender) { TCOM_DBEngine Engine=new CoDBEngine->Create(); WideString SourceDatabase="D:\\Before_compact.mdb"; WideString DestDatabase="D:\\After_compact.mdb"; if(FileExists(DestDatabase)) DeleteFile(DestDatabase); if(!FileExists(DestDatabase)) { Engine->CompactDatabase(SourceDatabase.c_bstr(),DestDatabase.c_bstr()); if(FileExists(DestDatabase)) { DeleteFile(SourceDatabase); RenameFile(DestDatabase,SourceDatabase); } } delete Engine; } [/code] -謝謝大大熱心的回覆
------
-謝謝大大熱心的回覆!謝謝!
編輯記錄
l90425 重新編輯於 2008-07-31 01:29:07, 註解 無‧
|
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
I don't have C++ Compiler software
you can try to modify [code cpp] WideString SourceDatabase="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Before_compact.mdb"; WideString DestDatabase="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\After_compact.mdb"; [/code] if problem usual you can try modifing [code cpp] delete Engine; [/code] changes to [code cpp] Engine=nil [/code] But I'm not sure that the code that is "Engine=nil " can have no error in IDE because I don't have any environment to test ^ ^ good luck
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
Engine=nil 用了這個還是不行也
還有Engine=NILL,Engine=NULL也都不行 還有什麼方法嗎 謝謝!謝謝!謝謝! ===================引 用 AndrewK 文 章=================== I don't have C Compiler software you can try to modify [code cpp] WideString SourceDatabase="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Before_compact.mdb"; WideString DestDatabase="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\After_compact.mdb"; [/code] if problem usual you can try modifing [code cpp] delete Engine; [/code] changes to [code cpp] Engine=nil [/code] But I'm not sure that the code that is "Engine=nil " can have no error in IDE because I don't have any environment to test ^ ^ good luck
------
-謝謝大大熱心的回覆!謝謝! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |