Delphi3数据库编程中的查找字段2008-03-26在设计数据库时,我们尽量去掉一些冗余的数据字段。例如在职工信息库中,对于职工所在单位,我们仅保留单位编号,而具体的单位信息,则存放在单独的单位信息库中,这是符合关系数据库理论的规范化要求的。随之而来的问题是,在编辑职工信息时,大多数用户不愿意与单位编号打交道,而希望直接输入或选择单位名称,因为单位编号太不直观和容易出错。尽管用SQL语言,可以在Query控件中实现两个数据库的链接,但是比较麻烦,Delphi3提供了一种捷径,让用户在编辑职工信息库时,直接操作单位名称,从包含有所有单位名称的下拉式列表中进行选择,这就要用到非常实用的查找字段编程。在窗体中一次编辑一条记录和在DBGrid网格中一次编辑多条记录,查找字段的应用方法是迥然不同的,前者要用到TDBLookUpComboBox控件,而后者要用到表格的LookUp Field字段。一、TDBlookUpComboBox控件的用法TDBLookUpComboBox控件可以同时与两个数据源相链接,一个是主数据源Datasource,另一个是二级数据源ListSource。在主数据源和二级数据源中,必须有意义完全相同的两个字段,称之为查找字段(或关键字段),分别设置为TDBLookUpComboBox的DataField和KeyField属性,ListField属性用于设定显示字段,显示字段来自于二级数据源ListSource。举例加以说明,职工信息库包括有职工编号、姓名、出生日期、性别、籍贯、单位编号等字段,单位信息库包括有单位编号、单位名称、负责人姓名、电话号码、传真号码、电子邮件地址等字段。在编辑职工信息时,用单位信息库中的单位名称代替某个职工的单位编号,需要在窗体中增加一个TDBLookUpComboBox控件对象,设置它的属性:
datafield=dwbh | //职工信息库的单位编号字段 |
datasource=datasource1 | //职工信息库数据源 |
keyfield=dwbh | //单位信息库的单位编号字段 |
listsource=datasource2 | //单位信息库数据源 |
listfield=dwmc | //用于显示的单位库中的单位名称字段 |
运行时界面如图一,可以用鼠标单击单位名称编辑框右边的下箭头,从激活的下拉式列表中进行选择。

图一