Progress - Bucle Do dentro de un For EACH

 
Vista:

Bucle Do dentro de un For EACH

Publicado por Emmanuel (3 intervenciones) el 11/05/2020 15:56:44
Buenos días compañeros, soy algo nuevo en el tema, y quisiera saber si pudiesen apoyarme, tengo la siguiente problemática.

1. A través de un campo de una tabla Custom, se coloca información separada por pipe "|" utilizo el DO para contar el No. de Veces que se tiene el No. de Entradas en ese campo (NUM TO-ENTRIES) y dentro del mismo biucle creo una tabla temporal, para poder a ir buscar información en otra tabla custom. sin embargo, cuando coloco un mensaje fuera del bucle, el resultado de mi búsqueda es el ultimo que se encuentra y no todos los registros como se muestrán dentro del bucle.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
DEFINE VARIABLE v-contador AS LOGICAL NO-UNDO.
DEFINE VARIABLE v-con      AS INTEGER NO-UNDO INITIAL 1.
DEFINE VARIABLE v-resulta  AS CHARACTER FORMAT "x(200)" NO-UNDO.
DEFINE VARIABLE v-uuid     AS CHARACTER FORMAT "x(50)"  NO-UNDO.
DEFINE VARIABLE v-campo         AS CHARACTER NO-UNDO.
DEFINE VARIABLE liCount    AS INTEGER NO-UNDO INITIAL 1.
DEFINE VARIABLE v-desc     AS CHARACTER FORMAT "x(200)" NO-UNDO.
 
DEFINE TEMP-TABLE t-relacion NO-UNDO
   FIELD tr-factura    AS CHARACTER FORMAT "x(200)"
   FIELD tr-comentario AS CHARACTER FORMAT "x(200)"
   FIELD tr-uuid       AS CHARACTER FORMAT "x(50)"
   FIELD tr-contador   AS INTEGER
INDEX tr-k1 tr-contador tr-factura.
 
   DO v-con=1 TO NUM-ENTRIES(Custom.CustomCommentNote,"|") TRANSACTION:
      IF INDEX(Custom.CustomCommentNote,"|") <> 0 THEN
         v-resulta = ENTRY(v-con,Custom.CustomCommentNote,"|").
      ELSE
         v-resulta = Custom.CustomCommentNote.
 
      FOR FIRST hist WHERE
         hist.empr       = '1000' AND
         hist_tipo_doc <> "" AND
         hist_num_doc   = TRIM(v-resulta) NO-LOCK:
      END.
 
      CREATE t-relacion.
      ASSIGN
         t-relacion.tr-factura = v-resulta.
         t-relacion.tr-uuid    = v-uuid.
         t-relacion.tr-contador = v-con.
 
      FOR FIRST t-relacion WHERE
         t-relacion.tr-factura = v-resulta AND
         t-relacion.tr-contador = v-con.
      END.
   END.
 
   FOR EACH t-relacion BREAK BY t-relacion.tr-factura:
         RUN prepara("H2F1",1,t-relacion.tr-uuid).
   END.

Message "UUID" v-contador v-con tr-factura tr-uuid.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Adicional al tema.

Publicado por Emmanuel (3 intervenciones) el 11/05/2020 16:20:51
Lo que intento realizar es sacar la información del bucle y que cuando se ejecute el RUN prepara, este me pueda repetir el segmento N veces dependiendo del No. de Registros encontrados separados por el prefijo "|". Gracias por sus comentarios! Les mando un cordial saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ariel
Val: 24
Ha mantenido su posición en Progress (en relación al último mes)
Gráfica de Progress

Bucle Do dentro de un For EACH

Publicado por Ariel (42 intervenciones) el 13/05/2020 17:22:10
Sacale el "Transaction" al bloque do, a ver que pasa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TRANSACTION

Publicado por Emmanuel (3 intervenciones) el 13/05/2020 18:59:03
Que tal Ariel, espero te encuentres bien.
De antemano te agradezco tu comentario, espero que estés teniendo un excelente día.

Saque el TRANSACTION del bucle DO, sin embargo, el resultado es el mismo, solo dentro del FOR EACH o dentro del Buclé DO, tengo la información, pero una vez que salen, se muestra únicamente un registro.

Mis más cordiales saludos para ti y tu familia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar