VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請問一個vfp+access的問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Mibh



註冊時間: 2004-02-21
文章: 19


第 1 樓

發表發表於: 星期五 四月 30, 2004 9:36 am    文章主題: 請問一個vfp+access的問題 引言回覆

小弟都是用vfp+access的方式來建構系統,最近遇到一個問題請各位大大協助。
如果user的電腦沒安裝access的話要如何去壓縮access的資料庫?。

下面的程式是在有access情況下的資料庫壓縮方法,提供給各位狐友參考。

If MessageBox("資料庫壓縮將花費一段時間!!" +Chr(13) + "立即壓縮請選擇 '是(Y)'"+ Chr(13) +"不壓縮請選擇 '否(N)'", 4+32+0, "資料壓縮")=6
mypath=left(sys(16),rat("\",sys(16)))
appx=createobject("Access.Application")
CurMDB = (mypath+"test.mdb")
TempMDB = (mypath+"test1.mdb")
If file(TempMDB)
Dele file &TempMDB
Endif
appx.DBEngine.CompactDatabase (CurMDB, TempMDB)
Dele file &CurMDB
Rename &TempMDB to &CurMDB
appx.Quit
Messagebox("壓縮完成!",64,"訊息")
Endif
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4212
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期五 四月 30, 2004 10:04 am    文章主題: 引言回覆

應該可以透過 odbc 來作,不過沒試過
_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
elleryq



註冊時間: 2007-06-21
文章: 768


第 3 樓

發表發表於: 星期二 五月 04, 2004 10:13 am    文章主題: 引言回覆

據說要安裝 ADOX 才行~~
ADOX 可以對 Access 資料庫做較低階的處理~~
你可以上微軟網站找ㄧ下~
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
Mibh



註冊時間: 2004-02-21
文章: 19


第 4 樓

發表發表於: 星期二 五月 04, 2004 11:00 am    文章主題: 引言回覆

謝謝各位的建議,若我研究出來,再與各位分享。
回頂端
檢視會員個人資料 發送私人訊息
Mibh



註冊時間: 2004-02-21
文章: 19


第 5 樓

發表發表於: 星期四 五月 06, 2004 12:07 pm    文章主題: 引言回覆

elleryq建議可用adox,經查詢後發現是無法使狦ADOX的,但是可用. "Microsoft Jet and Replication Objects 2.5 Library" (JRO)直接控制access資料庫。下面分別是在vb、c++下的用法

一、vb
Dim oJetEngine As JRO.JetEngine
Dim sSourceConn As String
Dim sDestConn As String

Set oJetEngine = New JRO.JetEngine

' Engine Type = 4 compacts an Access database in 3.5 format
' Engine Type = 5 compacts an Access database in 4.0 format (default)

sSourceConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.\advworks.mdb;" & _
"Jet OLEDB:Engine Type=5;"

sDestConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=.\advworks1.mdb;" & _
"Jet OLEDB:Engine Type=5;"

' Compact the database (makes a new copy)
oJetEngine.CompactDatabase sSourceConn, sDestConn

二、c++
#import "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL" no_namespace
...
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb;Jet OLEDB:Database Password=test",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc.mdb;" \
"Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=test");
}
catch(_com_error &e)
{
::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ;
}

以上參考http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q230/5/01.ASP&NoWebContent=1

最後小弟改寫成vfp但改寫的不是很好,請那位大大可再改寫的更完美
CurMDB = "D:\TESS.MDB"
TempMDB = "D:\TESS1.MDB"
If file(TempMDB)
Dele file &TempMDB
Endif
oJetEngine = createobject("JRO.JetEngine")
* Engine Type = 4 compacts an Access database in 3.5 format,access 97
* Engine Type = 5 compacts an Access database in 4.0 format (default),access 2000
sSourceConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+CurMDB+";Jet OLEDB:Engine Type=4;"
sDestConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+TempMDB+";Jet OLEDB:Engine Type=4;"
* Compact the database (makes a new copy)
oJetEngine.CompactDatabase (sSourceConn, sDestConn)

Dele file &CurMDB
Rename &TempMDB to &CurMDB
oJetEngine.quit
Messagebox("壓縮完成!",64,"訊息")
回頂端
檢視會員個人資料 發送私人訊息
elleryq



註冊時間: 2007-06-21
文章: 768


第 6 樓

發表發表於: 星期五 五月 07, 2004 8:54 am    文章主題: 引言回覆

原來如此~~
謝謝分享囉~~
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作