Hola.

Te lo digo de memoria, ya que hace tiempo que no hago esto:

De alguna manera, al indicar que quieres agrupar, es obligatorio que
todos los campos en el formato resultante sean o bien claves de grupo o
campos agregados (sumas, medias, etc.)

Si tienes muchos campos en el fichero puede ser un tanto engorroso.

En estos casos yo preparaba otro archivo "plantilla" con los campos
resultantes que quería obtener (periodo, y los campos de totales, con
los nombres que quieras) y en el OPNQRYF indicas que quieres utilizar
ese formato (el fichero puede estar vacío, es solo para la descripción
del formato) y además tienes que indicar como mapear los campos con las
operaciones de suma, etc. con la palabra clave MAPFLD.

Es bastante engorroso, la verdad.

Además, el programa que lea el fichero debe esperar ese mismo formato, y
tal vez no sea conveniente.

Te dejo un ejemplo (ARC001 sería el archivo real con muchos campos y
ARC002 la plantilla solo con los campos CLAVE1, CLAVE2, IMPORTE y CUENTA):

OPNQRYF FILE((ARC001))
                OPTION(*INP)
                FORMAT(ARC002) 
                KEYFLD((CLAVE1) (CLAVE2))
                GRPFLD(CLAVE1 CLAVE2)
                MAPFLD((IMPORTE '%SUM(1/IMPORTE)') (CUENTA '%COUNT' *DEC
3 0))



En general, si lo puedes hacer con SQL embebido por ejemplo parece más
limpio y más cómodo, o mediante un archivo temporal.


Un saludo.



El 15/07/2010 16:04, JUAN García escribió:
> Saludos
>
>    Necesito agrupar los registros de un fichero por un campo en un
> OPNQRYF:
>
>    OPNQRYF    FILE((FILE)) QRYSLT(*ALL)  KEYFLD((PERIODO))
> GRPFLD(PERIODO) GRPSLT(*ALL)             
>
>   Pero me da el error CPD3165, este error mas o menos viene a decir
> que cuando se utiliza la agrupación de registros todos los campos del
> formato de registro deben ser campos de agrupación, es decir deben
> estar incluidos en el parámetro GRPFLD, pero yo sólo quiero agrupar
> por este campo, ¿hay alguna manera de hacerlo?
>
> Gracias            
>
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a