今天遇到一個(gè)問(wèn) delphi?相關(guān)問(wèn)題的,提問(wèn)者“只會(huì)ADO的連接方式”鸥滨,想知道“Delphi firedacquery如何連接EXCEL”嗦哆,由此產(chǎn)生了一點(diǎn)興趣,遂研究之婿滓,后記錄之老速,供同好參考。
通常凸主,在 Delphi?里編寫一個(gè)桌面數(shù)據(jù)庫(kù)應(yīng)用的步驟可以很簡(jiǎn)單橘券,拖曳4個(gè)控件即可:
- TADOConnect?控件,用于連接指定的數(shù)據(jù)庫(kù)(ADO?驅(qū)動(dòng))
- TADOTable?控件,用于指定提供數(shù)據(jù)的數(shù)據(jù)表旁舰,也常用 TADOQuery?控件
- TDataDource?控件锋华,用于在 數(shù)據(jù)集合(Table)??和?數(shù)據(jù)呈現(xiàn)(DBGrid)
- TDBGrid?控件,用于顯示數(shù)據(jù)集合中的數(shù)據(jù)
為了提供更好的用戶體驗(yàn)箭窜,可能還可以添加一個(gè)導(dǎo)航控件:?
- TDBNavigator?控件毯焕,用于對(duì)當(dāng)前數(shù)據(jù)集進(jìn)行添加記錄、刪除記錄等的操作
總體大概如下圖所示:
使用 FireDAC?組件建立數(shù)據(jù)庫(kù)與此過(guò)程類似磺樱,現(xiàn)將步驟記錄如下:
1芥丧、在工程中分別添加如下控件:
- TFDConnection?用于建立與數(shù)據(jù)源的連接
- TFDQuery? 用于指定數(shù)據(jù)庫(kù)中的數(shù)據(jù)表
- TDataSource?用于建立?數(shù)據(jù)表?與?數(shù)據(jù)顯示?之間的橋梁
- TDBGrid?用于顯示數(shù)據(jù)
建立完成如下圖(與 ADO?方式并無(wú)大的區(qū)別):
2、雙擊 FDConnction1?圖標(biāo)坊罢,進(jìn)入 FireDAC connection Editor?界面:
FireDAC?預(yù)提供了多種數(shù)據(jù)庫(kù)支持,如:IBM DB2 Server擅耽、Microsoft SQL Server活孩、MySQL Server、Oracle Server乖仇、Microsoft Access Database?等憾儒,其中沒(méi)有 ADO,但提供了 ODBC乃沙,因此起趾,可以選擇使用 ODBC?方式來(lái)連接 Excel。
將 Driver ID?設(shè)置為 ODBC警儒,如下圖:
雖然現(xiàn)在就可以在表格填選各項(xiàng)設(shè)置训裆,但推薦 點(diǎn)擊 Wizard?按鈕,使用 FireDAC?提供的向?qū)Чδ軄?lái)完成設(shè)置:
最終生成的設(shè)置如下圖:
3蜀铲、連接 FDConntion?和?FDQuery边琉,雙擊 FDQuery?圖標(biāo),進(jìn)入 FireDAC Query Editor:
編寫 SQL?語(yǔ)句:
select * from [sheet1$]
在此记劝,有點(diǎn)需要提示的是:
?Excel?文件的工作簿中变姨,通常會(huì)包含多個(gè)工作表(相當(dāng)于數(shù)據(jù)庫(kù)中的表),與通常 SQL?語(yǔ)句 Select 數(shù)據(jù)表名稱表示方法不同厌丑,選擇 Exce?的某個(gè) Sheet定欧,其表示方法如下:
[ sheet名$]
寫完 SQL?語(yǔ)句后,可以點(diǎn)擊 Excute?按鈕怒竿,測(cè)試一下砍鸠,如果正確,會(huì)在下方的 RecordSet?頁(yè)中顯示出 SQL?命令所獲取的數(shù)據(jù)結(jié)果:
至此耕驰,用 FireDAC?連接 Excel?的關(guān)鍵部分基本完成睦番,再將 FDQuery?與 DataSoure?和 DBGrid?連接起來(lái)即可。