0

pfc_w_sheet から継承されたウィンドウがあり、u_tv から継承されたツリービューが含まれています。以下は、ウィンドウの open イベント内のスクリプトです。最初は、引数が 1 つしかなく、ツリービューに項目が正常に入力されて表示されました。しかし、datawindow: d_app_usermenu1 が変更されると、内部結合と検索引数 user_id が追加されます。また、la_arg[2] は Windows のオープン イベントにも追加されており、ツリービューは実行時に項目を設定できませんでした。tv_main.of_SetDatasource の戻り値が -2 であることがわかりました。これは、データウィンドウ オブジェクトにキー カラムが割り当てられていなかったことを意味します。-2 値を返すスクリプトの行の下を確認しました。of_CreateKey 関数は基本的に、連結されたすべてのキーを含む datawindow オブジェクトに計算列を追加します。これは、一意の行を検索できるようにするために必要です。これは、pfc_u_tv の説明によるものです。

// Add a computed column to the DataWindow object that will
// contain all the keys concatenated together.  This is necessary
// to be able to find a unique row.
If of_CreateKey(inv_ds[ai_Level].ds_obj) = -1 Then
    // No key columns were defined
    inv_ds[ai_Level].s_DataWindow = ""
    Destroy inv_ds[ai_Level].ds_obj
    Return -2
End if

これまたはいくつかの回避策に対処する方法について何か考えはありますか? 目的は、特定のユーザー ID に割り当てられたアイテムまたはメニューを取得することです。そのため、datawindow の SQL クエリで内部結合が必要です。

//Window's Open Event
Any la_arg[]
tv_main.of_SetDatasource(1, "d_app_usermenu1", SQLCA, "menu_name", "", FALSE, 1, 1)
tv_main.of_SetDatasource(2, "d_app_usermenu2", SQLCA, "menu_name", ":parent.1.parent_name", FALSE, 2, 2)
is_userid = Upper(Trim(gnv_App.of_getUserID( )))
la_arg[1] = '0'
la_arg[2] = is_userid
tv_main.of_InitialRetrieve(la_arg)
4

1 に答える 1

0

dw ペインターでデータウィンドウを開きます。

[行] > [プロパティの更新] に移動し、[一意のキー列] リストで少なくとも 1 つの列を選択します。保存して再テストします。

結合条件を追加すると、PB は更新可能なテーブルを認識できなくなり、そのテーブルの主キーを構成する列を判別できなくなりました。

データウィンドウ クエリを編集しているときに、"PB が更新仕様を変更しました" というメッセージが表示される場合は常に、最初に確認する必要がある場所です...

-ポール・ホーラン-
SAP

于 2015-03-05T19:09:55.883 に答える