25 項目を表示する data_block を持つオラクル フォームがあります。
フォームには、スクロールバーと「削除」ボタンがあります。データ ブロック内のアイテムが選択され、[削除] ボタンが押されると、選択されたアイテムがデータベースから削除され、data_block クエリが実行されます。
デフォルトでは、これはユーザーをリストの一番上に戻します。
リストから削除されたレコードの直前のレコードに移動しようとしています。
これは、GO_RECORD(number) 組み込み関数 (BIF) を使用して行うことができます (number が :System.cursor_record の保存された値であると仮定します)。
そして、ここで私は問題に遭遇します。GO_RECORD BIF は、表示された項目リストの一番上または一番下にレコードを移動します。これにより、リストが警告なしに 20 アイテム上に移動する可能性があります。
つまり、たとえば、data_block のレコード 23 ~ 47 が表示されており、レコード 33 が選択されています。レコード 33 が削除され、関数 GO_RECORD(32) を使用すると、表示されるレコードは 32 ~ 56 になります (リストを実質的に 9 レコード下にシフトします)。
このシフトを回避するには、(data_block とは対照的に) 表示内のレコードの位置を特定する何らかの方法が必要になると想定しています。
この機能が存在するかどうかは誰にもわかりませんか?
または、同じ結果を得る可能性のある別のアプローチを誰かが持っていますか?