2

さまざまなデータ型の行が多数ある頂点レポートがあります。ここで、ユーザーは各行を詳細に表示したいと考えています。このために、彼らはそれをフォームビューにしたいと考えています。

ただし、フォーム ビューは条件付きで読み取り専用にする必要があります (ユーザーが権限を持っていない場合は何も変更できないようにするため)。

私は、オラクルの対話型レポートが「単一行ビュー」に対して同様のビューを生成することを発見しました (ただし、条件付きで編集することはできません)。

別の言葉で言えば、列から行へとピボットしてレポートの行を表示したいと考えています。

それを行う方法を教えてください。

(新しいフォーム ビューを作成して、各要素を読み取り専用にすることもオプションですが、問題が多く、50 件を超えるレポートには適していません。)

よろしくお願いします。

4

1 に答える 1

2

特に編集が必要な場合は、フォームページを作成するしかありません。IR にはそのような機能が組み込まれておらず、apex_itemAPI を介して提供しようとしても、カスタム プロセスを作成する必要があります。
作成時にレポートとフォームの組み合わせを作成するのが最速でした (新しいページのフォームを選択してから、レポートを含むフォームを選択します)。
ここで、IR のクエリを選択し、これをフォーム クエリのベースとして使用する必要があります。
アイテムを条件付きで読み取り専用にするには、アイテムに読み取り専用条件を使用できます。を使用する場合は、 (ドキュメント: APEX_UTIL )plsql function returning booleanを通じて認可スキームをテストすることもできますapex_util.public_check_authorization
そして、このルートが非常に面倒で時間がかかることを除けば、これらの「多くの問題」については知りません。


ここで、フォームを特定のアイテムだけでなく、条件付きで全体として読み取り専用にする必要がある場合は、他の方法でも解決できます。
どちらの場合も、フォーム ページを作成する必要があります。これを回避する方法はなく、最も速くて簡単な方法です。

  1. フォームページの条件付き JavaScript + 条件付きプロセス:

    • 動的アクション、ページの読み込み時に発生します。JavaScript を実行します。

      $('input').prop('readonly', true);
      

      これにより、すべての入力項目が読み取り専用に設定されます。

    • CSS を使用することで、これをユーザーに明確に示すことができます。たとえば、

      input[readonly]{ background-color: grey; }
      

    ナビゲートしてカーソルを表示することはできますが、直接編集することはできません。もちろん、javascript だけでは十分ではありません。firebug や開発者ツールなどのツールを使用して値を変更することはできます。これを停止するには、動的アクション (ユーザーに権限がない場合にのみ起動) とレコード処理プロセス (ユーザーに権限がある場合にのみ実行) の両方の条件および/または承認チェックを変更します。ユーザーに権限がなく、値を変更して送信した場合、データベースには何も送信されません。

  2. 条件付きリンク + フォーム ページ:

    • レポートのデフォルトのリンク列を設定して、レポートの詳細ビューを表示します。
    • レポートに、フォーム ページにリンクする別のリンク列を作成します。
    • 2 番目のリンク列の表示条件または許可を、ユーザーが許可されている場合にのみ表示するように設定します。
    • 許可されていないユーザーがそのページにアクセスして、URL を操作してレコードの値を変更するのを防ぐには、ページに許可スキームを設定する必要があります。またはプロセス、あなたのボートを実際に浮かせるものは何でも。または、セッション状態の保護を使用します。(セキュリティについて読む良い機会だと思います!)
于 2012-10-01T07:52:35.597 に答える