0
プログラム:これは単なる保守プログラムで、これは1つのフレームにアイテムコードを表示し、入力を促します。アイテムコードを入力すると、pt_mstrにそのレコードの空白のフィールドが表示され、1つのフレームに表示されます(すべての空白フィールドを表示する必要はありません。また、そのフレーム内では、ユーザーがメインテーブルpt_mstrに直接更新を更新したい場合にのみ使用します。フィールド名を動的に取得し、それを進行中のメインテーブルに更新する方法
私はちょうどバッファハンドルを使用して空のフィールドを取得するためのコードを書いて、その後私は1つのテンポラリテーブルを作成し、フィールドを表示すると、私はそれ自身を打ち、フィールドを更新できません。
マイコード:
/*Sample Item master Maintenance Program*/
/* DISPLAY TITLE */
{us/mf/mfdtitle.i "3+ "}
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.
DEFINE VARIABLE hField AS HANDLE NO-UNDO.
define variable fldnm as character extent 10 no-undo.
define temp-table tt_temp no-undo
field tt_part like pt_part
field field1 as char extent 10.
form
pt_part colon 25
with frame a side-labels width 80.
setFrameLabels(frame a:handle).
/* DISPLAY */
view frame a.
repeat with frame a:
prompt-for pt_part
editing:
/* FIND NEXT/PREVIOUS RECORD */
{us/mf/mfnp.i pt_mstr pt_part "pt_mstr.pt_domain = global_domain and pt_part" pt_part pt_part pt_part }
if recno <> ? then
do:
display pt_part.
find pt_mstr where pt_part = input pt_part and pt_domain=global_domain no-lock no-error.
ASSIGN hBuffer = BUFFER pt_mstr:HANDLE.
empty temp-table tt_temp.
j = 1.
DO i = 1 TO 10:
ASSIGN hField = hBuffer:BUFFER-FIELD(i).
IF ((hField:BUFFER-VALUE = "")) THEN
do:
/* message hField:NAME "test" view-as alert-box.*/
find first tt_temp where tt_part = pt_part no-lock no-error.
if not avail tt_temp then
do:
create tt_temp.
assign
tt_part = pt_part
field1[j] = hField:NAME.
j = j + 1.
end.
else do:
assign
field1[j] = hField:NAME.
j = j + 1.
end.
end.
end.
end.
for each tt_temp:
display field1[1] field1[2] field1[3] field1[4].
end.
end.
end.
こんにちは@Jensd、あなたは私の明確なポイントを得ましたか?アイテムコードを入力すると、そのアイテムのpt_mstrを検索し、そのレコードの空白フィールドとそのフィールドを表示します。更新するとpt_mstrに反映されます。 –
@LovelyBobby私は、私の例がそうしていると言います - フィールドの動的マッチングなしで(それはもちろん追加することができます)。 – Jensd
フィールドの動的マッチングでは不可能ですか? bczあなたのソリューション私は自分のコードで使用することはできません、私の問題のために私に最高のソリューションをsuggetしますか? –