3

複数項目のデータベース ベースのフォームを作成しようとしています。私がそれを開くと、常に1つのレコードのみが入力されます。そして、最初の(DBから選択された)レコードと同じように、新しく作成されたレコードのすべてのフィールドを埋める機能が必要です。最初のレコードからコピーするだけです。

WHEN-NEW-ITEM-INSTANCE トリガーと ":system.record_status IN ('NEW','INSERT')" 条件を使用しようとしていますが、値が必要であることをフォームに伝える方法がわかりません私の最初の記録。つまり、

IF :system.record_status IN ('NEW','INSERT')
THEN
  :block.item := <<here goes pointer to my first record of that item>>
END IF;

では、特定のアイテム インスタンスから値を取得するにはどうすればよいでしょうか。

前もって感謝します。

4

2 に答える 2

2

ユーザーには見えないダミー ブロックを作成します。WHEN-NEW-FORM-INSTANCE トリガーの一部として、デフォルト レコードを入力します。

次に、実際の DATA ブロックで、ダミー ブロックのアイテムを参照して、アイテムを事前入力できます。おそらく、WHEN-NEW-ITEM-INSTANCE トリガーの群れを使用するよりも、WHEN-CREATE-RECORD などのより高いレベルのトリガーを使用することを選択するでしょうが、それは設計の残りの部分がどのように組み合わされるかによって異なります。


「それは大まかな解決策です」

申し訳ありませんが、デフォルト レコードをユーザーに表示していたことに気付きませんでした。ただし、私が知る限り、フォームには現在のレコード以外のレコードを参照するメカニズムはありません (完全な開示: しばらくフォームを実際に使用していないため、これがまだ場合)。

あなたができることは次のとおりです。

First_Record;
Duplicate_Record;

ユーザーがナビゲーション ジャンプを混乱させる可能性があるため、これにはマイナス面もあります。

于 2011-05-18T11:07:18.410 に答える
0

APC のソリューションは、次の 1 つの変更で機能するはずです。

First_Record;
Create_Record;
Duplicate_Record;

Duplicate_Record は常に前のレコードを現在のレコードにコピーしますが、必ずしも新しいレコードにコピーする必要はありません。Create_Record は、明らかに、その新しいレコードを作成します。

于 2011-09-12T22:03:55.050 に答える