3

フォームフィールドに動的ルックアップを作成する必要があります。これにより、2つの異なるデータソースからのフィールドが表示されます。次のように実行しようとしています。

  public void lookup()
  {

    query = new Query();
   sysTableLookup = SysTableLookup::newParameters(tableNum(smmBusRelTable), this);
  qbds = query.addDataSource(tablenum(smmBusRelTable));
 // qbds.addDataSource(tableNum(DirPartyTable));
 //qbds.relations(true);

sysTableLookup.parmQuery(query);   
sysTableLookup.addLookupField(fieldNum(smmBusRelTable, Busrelaccount));
//sysTableLookup.addLookupfield(fieldNum(DirPartyTable, Name));


 sysTableLookup.performFormLookup();
}

コメント行は、別のデータソースを追加するために実行しようとしている操作です。

4

2 に答える 2

5

私の知る限り、SysTableLookup クラスは他のテーブルからのフィールドの表示をサポートしていません。addLookup() メソッドは TableId を使用せず、すべてのフィールドがクエリの最初のデータソースにあると想定します。

さまざまなテーブルからのフィールドの参照をサポートする独自のバージョンの SysTableLookup を作成できます。SmmBusRelTable に表示メソッドを作成して DirPartyTable から名前を取得し (まだ存在しない場合)、それをルックアップのフィールドとして使用する、より簡単で実用的な (そしてより安価な) 方法があります。私の記憶が正しければ、メイン テーブルの表示方法はサポートされています。

正確に何を達成しようとしているのかによっては、さらに簡単な方法があるかもしれません。SmmBusRelTable の AutoLookup テーブル フィールド グループに表示メソッドを追加すると、lookup() メソッドをオーバーライドする必要がなくなります。

于 2013-02-02T14:32:46.540 に答える
3

実際、sysTableLookup で複数のデータソースを組み合わせるのは非常に簡単です。EcoResProductTranslationこれは、アイテムのルックアップで名前をフィルタリングできるようにするために使用したトリックです。

1) すべてのデータソースを組み合わせたビューを作成し、ルックアップで表示したいフィールドをビューに追加します。
2) 手順 1 で作成したビューからクエリを作成します。
3) これらを使用して、次のようにルックアップを実行します...

static client void lookupItemActive(FormStringControl _ctrl)
{
    SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(<ViewName>),_ctrl);
    Query          query = new Query(queryStr(<QueryName>));

    sysTableLookup.addLookupfield(fieldnum(<ViewName>, ItemId));
    sysTableLookup.addLookupfield(fieldNum(<ViewName>, Name));
    sysTableLookup.addLookupfield(fieldNum(<ViewName>, ItemGroupId));
    sysTableLookup.addLookupfield(fieldnum(<ViewName>, Status));
    sysTableLookup.addLookupfield(fieldnum(<ViewName>, RevId));
    sysTableLookup.addLookupfield(fieldnum(<ViewName>, ItemType));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
于 2014-08-28T19:55:02.650 に答える