Miembro
Ocasional
|
#1 Publicado: 22 Nov 2008 16:41
Hola, realizando una aplicación para un cliente, me surgió el problema de insertar filas a mitad de un portal.
He escrito un guión que es una forma de resolverlo. He puesto un botón en las líneas de portal que llame a este guión.
Supongamos que tenemos 2 tablas una de Presupuestos y otra de Lineas de Presupuestos relacionadas por el Nº de Presupuesto. En la tabla 2ª he creado un campo “lin_posicion” que va a numerarse en el guión y contendrá el nº de orden de la fila. Para que todo sea efectivo, hay que hacer que el portal se vea ordenado por ese campo tanto en la presentación como en la posible impresión en papel.
Estoy en la vista del Presupuesto y pulso el botón de una de las líneas del portal…
GUION INSERTAR UNA FILA EN EL PORTAL DE PRESUPUESTOS
# Guardo en variables la fila del portal seleccionada y el nº de presup
Establecer variable [ $filaportal; Valor:Get(PortalRowNumber) ]
Establecer variable [ $numpresup; Valor:Numero de Presupuesto ]
# Busco los registros del portal en la presentacion de lineas presupuestos
Ir al registro relacionado [ Desde la tabla: “lineas presupuestos”; Usando la presentación: “lineas presupuestos” (lineas presupuestos) ][ Mostrar sólo registros relacionados ]
# Si no hay registros en el portal salgo del guión
If [ Get ( LastError ) ≠ 0 ]
Salir del Guion [ ]
End If
#La variable cuenta ayudara a recorrer las filas.
Establecer variable [ $cuenta; Valor:1 ]
Ir al registro/petición/página[Primero ]
Loop
# Con la variable cuenta recorro las filas y voy numerando las líneas por orden. Cuando
# encuentro la fila donde añadir, salto 2 posiciones y guardo en otra variable su numero
If [ $cuenta ≠ $filaportal ]
Establecer campo [ lineas presupuestos::lin_posicion; $cuenta ]
Establecer variable [ $cuenta; Valor:$cuenta + 1 ]
Else
Establecer variable [ $posicionnuevoregistro; Valor:$cuenta ]
Establecer campo [ lineas presupuestos::lin_posicion; $cuenta + 1 ]
Establecer variable [ $cuenta; Valor:$cuenta + 2 ]
End If
Ir al registro/petición/página[ Siguiente; Salir después del último ]
End Loop
# Una vez numeradas, añado un registro (la nueva fila) y le pongo su nº de orden y el nº de presup
Nuevo registro/petición
Establecer campo [ lineas presupuestos::lin_posicion; $posicionnuevoregistro ]
Establecer campo [ lineas presupuestos::lin_numpresup; $numpresupuesto ]
# Vuelvo a la presentación de Presupuestos
Ir a la presentación [ presentación original ]
Espero que le pueda servir a alguien más
Saludos
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
MacOS X, Win XP, FM 9 adv, etc.
|