0

2 つのテーブルを持つデータベースがあります。1 つ目は「Customers」という名前で、2 つ目は「Labels」という名前です。

Customers テーブルには、次のフィールドがあります。

  • 顧客プレフィックス (CHAR 1)
  • 顧客 ID (CHAR 6)
  • 顧客名 (VARCHAR 50)

Labels テーブルには、次のフィールドがあります。

  • ラベル ID (AUTOINCREMENT FIELD)
  • ラベルの説明 (VARCHAR 50)
  • 顧客プレフィックス (CHAR 1)
  • 顧客 ID (CHAR 6)
  • 顧客名 (ルックアップ フィールド)

最初のテーブルでは、主キーは「顧客プレフィックス」-「顧客 ID」によって作成されます。同じフィールドが 2 番目のテーブルの外部キーです。

Delphi フォームでは、顧客の名前を表示するために TDBLookupCombobox を配置し、listsourceを Customers テーブルに、データソースを Labels テーブルに設定しましたが、Keyfield を設定するためにフィールドを使用する必要があります:顧客のプレフィックス顧客 ID。DBLookupCombobox の KeyField に 2 つのフィールド名を入れる方法がないようです。

私の例のように、DBLookupCombobox で複数フィールド キーを使用する方法はありますか?

4

1 に答える 1

1

複数のキーフィールドを使用する Lookupfield に TBLookupCombobox を使用することはできません。その結果、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 に答える