我有一个包含两个表的数据库:第一个名为“Customers”,第二个名为“Labels”。
在客户表中,我有以下字段:
在标签表中,我有以下字段:
在第一个表中,主键由“客户前缀” - “客户ID”生成。相同的字段是第二个表中的外键。
在Delphi表单中,我放置了一个TDBLookupCombobox以显示客户名称,我将 listsource 设置为Customers表,将数据源设置为标签表格,但我将用于设置密钥字段:客户前缀和客户ID 的字段。 似乎没有办法在DBLookupCombobox的KeyField中放置两个字段名称。
有一种方法可以使用e多字段键,就像我的例子一样,使用DBLookupCombobox?
答案 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)