0

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

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

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

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

  • 标签 ID(自动增量字段)
  • 标签说明 (VARCHAR 50)
  • 客户前缀 (CHAR 1)
  • 客户 ID (CHAR 6)
  • 客户名称(查阅字段)

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

在 Delphi 表单中,我放置了一个 TDBLookupCombobox 以显示客户的名称,并将listsource设置为 Customers 表,将数据源设置为 Labels 表,但我必须使用字段来设置Keyfield客户前缀客户编号。似乎没有办法将两个字段名称放在 DBLookupCombobox 的 KeyField 中。

有一种方法可以通过 DBLookupCombobox 使用 e 多字段键,例如我的示例?

4

1 回答 1

1

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

于 2013-11-07T13:23:00.077 回答