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

請教BDE與ADO之間轉換的問題

答題得分者是:kevin2004
leonli80
一般會員


發表:29
回覆:27
積分:11
註冊:2006-08-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-08 14:48:17 IP:218.81.xxx.xxx 訂閱
我有一個程式原來是用BDE方式的Paradox資料庫,現在想改爲ADO連結MS_SQL資料庫的方式,請問要轉換之中要注意哪些問題,有做過的朋友請分享一下經驗,謝謝。
bruce
中階會員


發表:19
回覆:121
積分:83
註冊:2002-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-09 15:53:45 IP:203.70.xxx.xxx 訂閱
轉錯了,要可以重新再轉,預留給自己改正錯誤的機會 ^^
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-09 20:55:10 IP:61.231.xxx.xxx 訂閱
你問到了一個幾年前費了公司兩三年時間改過好幾套系統近百萬行程式碼的痛苦經驗。現在還有好些系統裏還必須ODBC﹝因為要接BDE﹞與ADO合用的地方沒完全換好。還有即使已花了一兩年將報表更新為FR,可是實在是舊的QR太多了,習慣了FR的好處,公司沒人願碰QR,結果當然是還留了好幾百個較少被客戶使用的QR報表在好幾個系統裏。
真是痛苦的經驗。
以往因為Form全改用ADO處理了,造成用Query的QR全部死光,可是又沒那麼空去救這麼多QR報表,就睜隻眼閉隻眼,只要客戶不打電話來抱怨,我們就不動的地步。不過只要客戶抱怨QR表動不了,我們只須幾分鐘就可以將QR又點活來,你看本事如何。
------
Kevin
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-09 23:38:33 IP:59.114.xxx.xxx 訂閱
BDE: 1:使用Database連結BDE再連結DB
2:TQuery傳遞變數使用Query1.ParamByName('Param').AsString…
3:Master-Detail設定Detail的DataSource為Master的DataSource即可連結進行資料編修
4: Database1.StartTransaction;
try
Query1.ApplyUpdates;
Query1.CancelUpdates;
Database1.Commit;
except
Database1.Rollback;
end;
ADO: 1:使用ADOConnection連結DB
2:TADOQuery傳遞變數使用ADOQuery.Parameters.ParamByName('Param').Value
3:Master-Detail設定Detail的DataSource為Master的DataSource即可連結,但是要進行資料編修會造成無法連結
小弟我都是在Master的AfterScroll時,下程式去連結
4: ADOConnection1.BeginTrans;
try
ADOQuery1.UpdateBatch;
ADOQuery1.CancelBatch;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;

這是小弟目前可以想到的大概是這些吧…我很早就將程式從BDE轉換成ADO,至少不用在Client端安裝BDE
不過您要注意您開發電腦所使用的MDAC的版本,一般windows xp內鍵的是2.8版,而windows 2000、98內鍵的是2.6版
這會影嚮到SQL語法的執行,例如subQuery就會有問題…

~小弟淺見,參考看看~
===================引 用 文 章===================
我有一個程式原來是用BDE方式的Paradox資料庫,現在想改爲ADO連結MS_SQL資料庫的方式,請問要轉換之中要注意哪些問題,有做過的朋友請分享一下經驗,謝謝。
------
~小弟淺見,參考看看~
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-10 14:45:23 IP:61.231.xxx.xxx 訂閱
真是一言難盡,真是痛不欲生。
先講你的DB。如果只是Paradox要換成同級類似的資料庫如Access等,那簡單。反正這些都是憋腳的假資料庫,很多正統資料庫的功能它都沒有,程式碼改的不多。而且它的聯接與設定也很簡單,不須要考慮要客戶那的安裝設定等須增加的成本。比如BDE原接MSSQL是用SQL-Link,現在改用ADO那就只用MDAC就好了,簡單很多。不過如果你的系統中還是必須留有BDE的遺跡時﹝如果你是要轉一個有七八十萬行程式碼的系統,那個痛苦你很快就會知道了﹞,那就還必須要多加個中間層如ODBC,設定就會複雜一些。
通常mssql的系統會在搭配個桌上版的資料庫,且通常會搭配M$的Access或MSDE,因為都是它們家的,當然相容性很高啦,Loading最輕鬆,Suffer最少了。
Paradox資料會毀損且發生頻率很高,通常系統裏必須要有修復功能,否則光是接客戶的電話,你就會瘋掉了。而Access是好一點,可是也沒好到那裏去,你還是要寫個修復功能在系統中。在MSSQL中則要定期作DBCC,這也不可少。Paradox的備份就將整個目錄拷出來,或更好的是作整個目錄壓縮﹝小弟建議你在AP中指揮WinRAR作壓縮﹞,如此就可以了。如果你還更囉嗦,就設成退出自動壓縮,反正體積小速度快,客戶會很喜歡的。在MSSQL中就不是那麼容易了,除了MSQSL-Agent自動備份外,你尚要加寫一些進階備份取回或匯出轉進及改DB_Stru的功能。
用BDE的人通常也會用QuickReport,這方面問題是較少,可是工不小。因為QuickReport的Query是隨主Form而早被打開的,所以當你的Form改為Ado時,你的QR的DataSource也要改一下,這時你選用的Ado元件就要盡可能類似你原先的結構。如你原先多用TQuery,那你最好多選用TAdoQuery,否則光是改這些QR就會叫你痛不欲生。如果選對ADO元件,改QR是很輕鬆的。當然,如果願長痛不如短痛,那乾脆將QR改為FastReport或RaveReport或CrystalReport也好。
重點是你系統的規模大小,如果超過十萬行,那你一定先要作執行計畫才行。
改時的成功可望度,困難度等與你的系統模組化的程度及你公司內Coding管理、專案管理程度等有關。
如果你的系統不小,先要有心理準備,苦日子就要來了

------
Kevin
系統時間:2024-11-23 5:12:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!