選択した行の値をコピーして、新しいレコードとして保存する必要があります。Oracle Apex 4.2 と表形式を使用しています。チェックボックスを使用して行とボタンのコピーを選択する必要があります。複数の行を選択してからコピーボタンをクリックすると、選択したすべての行の値が新しい行としてコピーされ、保存されます。
誰でも助けてもらえますか
選択した行の値をコピーして、新しいレコードとして保存する必要があります。Oracle Apex 4.2 と表形式を使用しています。チェックボックスを使用して行とボタンのコピーを選択する必要があります。複数の行を選択してからコピーボタンをクリックすると、選択したすべての行の値が新しい行としてコピーされ、保存されます。
誰でも助けてもらえますか
Oracle APEX表形式フォームを介して単一の表から既存のレコードをクローニングするという考え方は、ページ領域コンテンツ用にAPEXウィザードを使用して設定できるデフォルトの設計にほとんど干渉することなく機能します。
独立した主キーを持つテーブルを構築します。
コピー操作を実行するためのCOPY_REQUEST
との2 つの補助列を含めることをお勧めします。COPIED_FROM
特定のフォーム要素が、設定される表形式フォームのこれらの列にマップされます。
コピーする必要があるレコードを読み取ることができる Oracle ストアド プロシージャを作成します。SUBMIT
このプロシージャは、ボタンが押されるたびに呼び出されます。
(オプション)処理するものが何もない場合 (つまり、コピー用にマークされたレコードがない場合) に、ステップ (3) の抑制を含めることを検討してください。
ヒント:標準の TABLE 作成ウィザードを使用すると、簡単に作成できます。PRIMARY_KEY として指定CUSTOMER_ID
し、APEX に標準の自動インクリメント機能を作成させます。(シーケンスとトリガーのセットアップ)
これが私が使用したサンプルデータです...それは問題ではありません。独自の値を入力して、何が起こったのかを簡単に確認できます。
この手順は、テーブル内の特別な識別子を使用して、一度に 1 つ以上のレコードを処理しCOPY_REQUEST
ます。タスクが完了すると、プロシージャはクリーンアップし、リクエスト値を再度リセットします。
create or replace procedure proc_copy_me_request is
c_request_code CONSTANT char(1):= 'Y';
cursor copy_cursor is
SELECT cme.CUSTOMER_ID, cme.CUSTOMER_NAME, cme.CITY, cme.COUNTRY,
cme.COPY_REQUEST
FROM copy_me cme
WHERE cme.COPY_REQUEST = c_request_code
FOR UPDATE OF cme.COPY_REQUEST;
BEGIN
FOR i in copy_cursor LOOP
INSERT INTO copy_me (customer_name, city, country, copied_from)
VALUES (i.customer_name, i.city, i.country, i.customer_id);
UPDATE copy_me
SET copy_request = null
WHERE CURRENT OF copy_cursor;
END LOOP;
COMMIT;
END proc_copy_me_request;
非表示にできる列もあります。レコードが最初にコピーされた場所を追跡します。
カーソルが
FOR UPDATE OF
andWHERE CURRENT OF
表記を使用していることに注意してください。この手順は参照されるレコードを変更するため、これは重要です。
FORM
標準タイプのページを設定し、TABULAR FORM
スタイルを選択します。セットアップ手順に従い、正しい主キーをマッピングするように注意し、上記の前の手順でテーブルを使用して作成された PK シーケンス オブジェクトにもマッピングします。
これらの手順が完了すると、ページの設定は次のようになります。
COPY_REQUEST
フォームの値を編集します。
COPIED_FROM
フォーム値の編集:列属性セクションの下で、表示形式オプションを「テキストとして表示 (状態を保存)」に変更します。これは、ユーザーがこの読み取り専用フィールドを踏まないようにするためです。知ることが重要でない場合は、それを抑制することもできます。
新しいプロセスの作成: コピー プロシージャの実行
これは同じ構成ページの一番下です。変更または追加する項目はほとんどありません。
以下の最初のスクリーンショットは、ページが整頓され、チェックボックス コントロールが配置される前のものです。
いくつかのテストデータをプラグインして、試してみてください。SUBMIT
上記の手順で作成されたページ プロセスは、フォーム ボタンが選択されたときに同時に行われたすべてのコピー要求を処理するストアド プロシージャを条件付きで呼び出します。
コメント: Oracle APEXの組み込みウィザードをいじくり回すのに十分な時間を費やすと、ツール内で互換性のある新しい設計パターンとプロセス フローを学習する機会があります。アプローチを適応させることで、追加の作業とフラストレーションの量を減らすことができます。