Programme: Il s'agit d'un programme de maintenance simple, dans lequel il affiche le code d'article dans une trame et invite l'entrée. Si vous entrez le code de l'article, il doit afficher les champs vides pour cet enregistrement dans pt_mstr et afficher dans une image (pas besoin d'afficher tous les champs vides, seulement 4 ou 5 premiers champs suffisent). et aussi dans ce cadre seulement si l'utilisateur veut le mettre à jour directement à la table principale pt_mstr. Qu'est-ce que j'ai essayé est, je viens d'écrire le code pour obtenir des champs vierges en utilisant tampon gérer et après que je crée une table temporaire et l'affichage des champs, je suis tombé là, je suis incapable de mettre à jour les champs.Comment obtenir dynamiquement le nom du champ et le mettre à jour dans la table principale en cours
Mon code:
/*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.
Salut @Jensd, avez-vous bien compris? Si j'entre le code d'article, il cherchera pt_mstr pour cet item et affichera quels sont les champs vides pour cet enregistrement et là même si nous le mettons à jour, cela affectera pt_mstr. –
@LovelyBobby Je dirais que mon exemple le fait - sans appariement dynamique de champs (qui pourrait être ajouté bien sûr). – Jensd
Est-ce impossible avec la correspondance dynamique des champs? bcz votre solution je ne peux pas utiliser dans mon code, allez-vous sugget me meilleure solution pour mon problème –