解決了幾乎所有Delphi+Access同仁的問題—動態建立、壓縮Access資料庫(*.MDB) (轉)
動態建立、Access(*.M)
宣告:這是前無古人,後無來者的解決方案(有點吹,但是我實在太激動了!),希望各位能多多關照
建立Access資料庫幾乎是所有+Access所遇到的難題,我經過兩頭(昨天上午到現在)的艱苦奮戰,終於將它全部解開,現在一一奉獻給大家:
一、透過OLE方式建立
相信各位都用透過OLE方式訪問、的經歷,具體我不說太多,直接把具體程式碼寫出來就完了
在引用部分加入:
uses ComObj;
實現部分:
procedure TForm.BitBtn1Click(Sender: T);
var
CreateAccess:OleVariant;
begin
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provr=.Jet.OLEDB.4.0;Data =c:Aceco.mdb');
end;
說明:
1、在C:下建立Aceco.mdb;
2、是格式,用Access97打不開;
3、需MDAC,這是好訊息,客戶不需安裝Access也可以
二、透過DBEngine建立
這才是關鍵中的關鍵,是我一定要寫出來的原因!
各位是否還記得安裝Delphi的時候,如果你選擇自定義安裝(我一般用Delphi寫,所以當然是越小越好),會有很多安裝選項,讓你選擇Access97或Access2000,還有MDAC等,問題就在這裡!Delphi5.0中早就封裝了現成的類,只是大家都沒有注意而已它位於:
$Delphi5Imports
目錄下!
其中有DAO97.DCU檔案,它是透過DAO350.DLL來完成的,其中的定義部分和DAO350.DLL如出一轍!OK,到現在,所有的一切都明白了(可惜我花了一天時間!)。那麼具體實現起來就太方便了,具體過程如下:
在引用部分加入:
uses DAO97;
實現部分:
procedure TFormOffice.BitBtn4Click(Sender: TObject);
var
Engine:DBEngine;
begin
Engine:=CoDBEngine.Create;
Engine.CreateDatabase('c:NewAccess.mdb',';LANGID=0x0804;CP=936;COUNTRY=0;',dbEncrypt);
end;
說明:
1、在C:下建立NewAccess.mdb;
2、語言國家是簡體中文;
3、壓縮整理資料庫用Engine.CompactDatabase('c:invoice.mdb','c:God.mdb','',0,'');就是將c:invoice.mdb壓縮整理成c:God.mdb,剩下的只是將c:invoice.mdb刪除(DeleteFile('c:invoice.mdb');),然後將c:God.mdb重新命名(RenameFile('c:God.mdb','c:invoice.mdb');)即可。
三、透過Access97建立,然後複製
四、透過ODBC的建立
補充:
1、透過OLE方式建立時如果是Access97,那麼可能是CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.5.1;Data Source=c:Aceco.mdb');,嘿嘿,小弟對VB實在是一竅不通,還望各位再測試一下(可以需要MDAC比較低的版本)。
2、關於CreateDatabase中國家的設定:
Module LanguageConstants; // DAO predefined constants.
dbLangArabic = ;LANGID=0x0401;CP=1256;COUNTRY=0;
dbLangCzech = ;LANGID=0x0405;CP=1250;COUNTRY=0;
dbLangDutch = ;LANGID=0x0413;CP=1252;COUNTRY=0;
dbLangGeneral = ;LANGID=0x0409;CP=1252;COUNTRY=0;
dbLangGreek = ;LANGID=0x0408;CP=1253;COUNTRY=0;
dbLangHebrew = ;LANGID=0x040D;CP=1255;COUNTRY=0;
dbLangHungarian = ;LANGID=0x040E;CP=1250;COUNTRY=0;
dbLangIcelandic = ;LANGID=0x040F;CP=1252;COUNTRY=0;
dbLaordic = ;LANGID=0x041D;CP=1252;COUNTRY=0;
dbLangNorwDan = ;LANGID=0x0414;CP=1252;COUNTRY=0;
dbLangPolish = ;LANGID=0x0415;CP=1250;COUNTRY=0;
dbLangCyrillic = ;LANGID=0x0419;CP=1251;COUNTRY=0;
dbLangSpanish = ;LANGID=0x040A;CP=1252;COUNTRY=0;
dbLangSwedFin = ;LANGID=0x040B;CP=1252;COUNTRY=0;
dbLangTurkish = ;LANGID=0x041F;CP=1254;COUNTRY=0;
dbLangJapanese = ;LANGID=0x0411;CP=932;COUNTRY=0;
dbLangChineseSimplified = ;LANGID=0x0804;CP=936;COUNTRY=0;
dbLangChineseTraditional = ;LANGID=0x0404;CP=950;COUNTRY=0;
dbLangKorean = ;LANGID=0x0412;CP=949;COUNTRY=0;
dbLangThai = ;LANGID=0x041E;CP=874;COUNTRY=0;
dbLangSlovenian = ;LANGID=0x0424;CP=1250;COUNTRY=0;
3、關於CreateDatabase中資料庫版本資訊
Enum DatabaseTypeEnum;
dbVersion10 = 1;
dbEncrypt = 2;
dbDecrypt = 4;
dbVersion11 = 8;
dbVersion20 = 16;
dbVersion30 = 32;
4、其它方面,希望各位再加補充。
StarFarm-->Hank(to:starfarm@263">starfarm@263.net)
2000/12/29
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987673/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在ASP中壓縮ACCESS資料庫資料庫
- 利用ADO壓縮Access資料庫程式碼資料庫
- 100多次競賽後,他研發了一個幾乎可以解決所有機器學習問題的框架機器學習框架
- 解決兩相同資料庫資料同步的問題 (轉)資料庫
- 如何動態連線Access資料庫資料庫
- Laravel5的資料庫表建立問題 資料庫遷移操作報錯問題解決Laravel資料庫
- 備份和恢復SQL Server資料庫+壓縮ACCESS的類(方法)SQLServer資料庫
- access資料庫大資料量分頁的問題資料庫大資料
- 上次jboss連mssql的問題已解決,這次是MDB的問題SQL
- Oracle資料庫基本知識及問題解決(轉)Oracle資料庫
- 安裝資料庫和資料庫解決問題資料庫
- 解決hive資料庫 插入資料很慢的問題Hive資料庫
- 掉電無法啟動資料庫問題解決資料庫
- C# 關於壓縮、加密、解壓問題C#加密
- 資料壓縮簡史 (轉)
- 解決被掛起的資料庫問題資料庫
- linux壓縮(解壓縮)命令詳解-轉Linux
- 移動端圖片上傳旋轉、壓縮的解決方案
- Access denied for user ‘root‘@‘localhost‘問題的解決localhost
- 使用Visual Basic訪問資料庫幾個注意的問題 (轉)資料庫
- oracle 靜態資料壓縮分離Oracle
- 如何解決MDB交錯寫log的問題
- 資料庫壓縮技術探索資料庫
- 資料庫層面問題解決思路資料庫
- 解決不能訪問 VMware Server Web Access 的問題ServerWeb
- AIX下的壓縮測試及所有壓縮命令AI
- 解決所有環境問題
- freebsd簡單漢化終結篇[解決了簡單漢化的所有問題(轉)
- PHP動態壓縮js,cssPHPJSCSS
- 利用Java實現zip壓縮/解壓縮 (轉)Java
- Linux下壓縮,解壓縮RAR包(轉)Linux
- SqlServer資料庫中文亂碼問題解決SQLServer資料庫
- oracle 資料庫解決問題思路總結Oracle資料庫
- 解決中文問題的幾個常用的函式 (轉)函式
- 利用Apache+PHP3+MySQL建立資料庫驅動的動態網站(轉)ApachePHPMySql資料庫網站
- 【資料庫】解決Mysql資料庫提示innodb表不存在的問題!資料庫MySql
- linux 下壓縮與解壓資料夾Linux
- 關於azkaban上傳job壓縮包報錯問題的解決方案