多关键字段DBLookupCombobox

时间:2013-11-07 08:11:14

标签: delphi

我有一个包含两个表的数据库:第一个名为“Customers”,第二个名为“Labels”。

在客户表中,我有以下字段:

  • 客户前缀(CHAR 1)
  • 客户ID(CHAR 6)
  • 客户名称(VARCHAR 50)

在标签表中,我有以下字段:

  • 标签ID(AUTOINCREMENT FIELD)
  • 标签说明(VARCHAR 50)
  • 客户前缀(CHAR 1)
  • 客户ID(CHAR 6)
  • 客户名称(查询字段)

在第一个表中,主键由“客户前缀” - “客户ID”生成。相同的字段是第二个表中的外键。

在Delphi表单中,我放置了一个TDBLookupCombobox以显示客户名称,我将 listsource 设置为Customers表,将数据源设置为标签表格,但我将用于设置密钥字段客户前缀客户ID 的字段。 似乎没有办法在DBLookupCombobox的KeyField中放置两个字段名称。

有一种方法可以使用e多字段键,就像我的例子一样,使用DBLookupCombobox?

1 个答案:

答案 0 :(得分:1)

使用多个Keyfields对Lookupfield使用TBLookupCombobox是不可能的, 因此,即使在DBGrid中使用编辑器也会失败 如果你看看DBCtrls.pas,你会发现在TDBLookupControl.UpdateListfields 提取FKeyfield(TField) FKeyField := GetFieldProperty(DataSet, Self, FKeyFieldName);
由于FKeyfield是单个字段,因此查找字段将失败。 UpdateDataFields中的Masterfield(TField)也会发生同样的情况:
FMasterField := GetFieldProperty(FDataLink.DataSet, Self, FDataField.KeyFields)