質問

データテーブルに正しいデータを入力する際に​​問題が発生します。

フォームで使用しているデータテーブルがあります。これは userConfigProfile と呼ばれます。これには、groupId (これは UserGroupInfo に結合します) と corpProfileId (これは私が作成したテーブルに結合します) の 2 つの FK 列があります。userConfigProfiles のデータは別のフォームから入力され、現在は適切に入力されています。

問題は、現在のユーザーが属する UserGroups に基づいて userConfigProfiles の行のサブセットを表示するドロップダウンを SalesTable フォームに作成する必要があることです。

SalesTable フォームのテーブル userConfigProfiles に以下のコードを追加してこれを実行しようとしました。

public void init()
{
    userConfigProfiles.data(userConfigProfiles::find());

    super();
}

次に、この find メソッドをテーブル自体に追加しました。

static public userConfigProfiles find()
{
    userConfigProfiles userProfile;
    UserGroupList userGroupList;

    str 8 u = curUserId();

    select *
    from userProfile
    order by userProfile.bdcProfileId
        join userGroupList
    where userProfile.groupId == userGroupList.groupId
        && userGroupList.userId == u;

    return userProfile;
}

ただし、find メソッドが呼び出され、正しいデータが返されたとしても、フォームのドロップダウン リストに入るデータには影響していないようです。

私のドロップダウン リストは、userConfigProfiles の DataSource と corpProfileId の DataField を持つ StringEdit フィールドです。

問題を解決するにはいくつかの方法があると確信しており、コードをすべて削除してドロップダウン ボックスをまったく別の方法で実行することになる場合でも、どの方法でも受け入れるつもりです。

役に立ちましたか?

解決

テーブルを使用してクエリを作成する UserConfigProfiles 存在結合 (プロパティ joinMode) テーブルへ UserGroupList, 、適切なリレーションを使用して、フィールドに範囲を追加します UserId とともに value(currentUserId()).

この値は動的です クエリ式 クラスによって提供されるもの SysQueryRangeUtil.

最後にクラスを使用してルックアップを作成します SysTableLookup クエリを使用して。

他のヒント

ルックアップメソッドに関する最高のチュートリアルは、Vanya によるものです。

http://kashperuk.blogspot.com/2009/04/lookup-methods-tutorial-custom-list.html

彼のチュートリアル XPO をダウンロードし、あなたのフォームに彼のオプションの 1 つを使用してください。あなたのコードはハッキングジョブのように見えます。

テーブル上のレコードのサブセットを表示しようとしている場合は、query() を変更する必要がありますが、ルックアップから表示される値を変更しようとしている場合は、彼のブログ投稿を確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top