今天遇到一个问 delphi 相关问题的,提问者“只会ADO的连接方式”,想知道“Delphi firedacquery如何连接EXCEL”,由此产生了一点兴趣,遂研究之,后记录之,供同好参考。
通常,在 Delphi 里编写一个桌面数据库应用的步骤可以很简单,拖曳4个控件即可:
- TADOConnect 控件,用于连接指定的数据库(ADO 驱动)
- TADOTable 控件,用于指定提供数据的数据表,也常用 TADOQuery 控件
- TDataDource 控件,用于在 数据集合(Table) 和 数据呈现(DBGrid)
- TDBGrid 控件,用于显示数据集合中的数据
为了提供更好的用户体验,可能还可以添加一个导航控件:
- TDBNavigator 控件,用于对当前数据集进行添加记录、删除记录等的操作
总体大概如下图所示:
使用 FireDAC 组件建立数据库与此过程类似,现将步骤记录如下:
1、在工程中分别添加如下控件:
- TFDConnection 用于建立与数据源的连接
- TFDQuery 用于指定数据库中的数据表
- TDataSource 用于建立 数据表 与 数据显示 之间的桥梁
- TDBGrid 用于显示数据
建立完成如下图(与 ADO 方式并无大的区别):
2、双击 FDConnction1 图标,进入 FireDAC connection Editor 界面:
FireDAC 预提供了多种数据库支持,如:IBM DB2 Server、Microsoft SQL Server、MySQL Server、Oracle Server、Microsoft Access Database 等,其中没有 ADO,但提供了 ODBC,因此,可以选择使用 ODBC 方式来连接 Excel。
将 Driver ID 设置为 ODBC,如下图:
虽然现在就可以在表格填选各项设置,但推荐 点击 Wizard 按钮,使用 FireDAC 提供的向导功能来完成设置:
最终生成的设置如下图:
3、连接 FDConntion 和 FDQuery,双击 FDQuery 图标,进入 FireDAC Query Editor:
编写 SQL 语句:
select * from [sheet1$]
在此,有点需要提示的是:
Excel 文件的工作簿中,通常会包含多个工作表(相当于数据库中的表),与通常 SQL 语句 Select 数据表名称表示方法不同,选择 Exce 的某个 Sheet,其表示方法如下:
[ sheet名$]
写完 SQL 语句后,可以点击 Excute 按钮,测试一下,如果正确,会在下方的 RecordSet 页中显示出 SQL 命令所获取的数据结果:
至此,用 FireDAC 连接 Excel 的关键部分基本完成,再将 FDQuery 与 DataSoure 和 DBGrid 连接起来即可。