GeneXus - AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

 
Vista:

AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Andres Estupiñan (10 intervenciones) el 18/07/2007 23:35:44
Buenas, Mi problema es el siguiente tengo dos transacciones con dos niveles, y debo copiar lo que hago en una a la otra en ciertos casos.

Lo que vengo haciendo es lo siguiente: La transacción 1 llama a un work panel q llama a un procedimiento que lllena con el comando new la transacción 2.

Despues de hacer todo este proceso, La transacción 2 solo se llena en su encabezado, es decir el 2do nivel nunca he sido capaz de llenarlo, el codigo q uso en el procedimiento es el siguiente. el id de la 2da transacción q es 'salamccod' tiene la propiedad de autonumerico.

New Defined by SalAmcCod
SalAmcFch = Today()
RqsCod = &RqsCod
SalAmcDpd = &DpdCod
endnew
--------------------->HASTA ACA ES Q FUNCIONA PORQUE SI LLENA LA BASE DE DATOS
New
SArtCod=&ArtCod
SArtDsc=&ArtDsc
SalAmcCnt=&RqsCnt
endnew
----------------------> ESTO ES LO Q NO QUIERE INSERTAR, EN SARTCOD SIEMPRE SALE CERO

Todas las variables con las q lleno la transacción las mando con CALL desde el work panel y las recibo con PARM en el procedimiento.

Les agradezco muchisimo si me pueden ayudar.
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

RE:AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Leandro (146 intervenciones) el 19/07/2007 14:28:38
Los comandos new deberias anidarlos...

new
defined by ATT_TABLA1

TABLA1CLAVE = &Valor
.
.
.
new
defined by ATT_TABLA2
TABLA2CLAVE = &Valor
endnew
endnew

Eso deberia funcionar. En el primer new instancias la clave superior, y en el segundo la infrerior. No Instancies la clave primaria del nivel 1 en el segundo new porque no funciona.

Si esto no te sirve, intenta crear un SDT con la misma estructura que la transacción de dos niveles, y realizas la grabación con los datos del SDT. Exitos.
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

RE:AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Andres Estupiñan (10 intervenciones) el 20/07/2007 02:09:57
Bueno, ya probe de esta forma que dices, pero no, la verdad no me funciona.
La aplicación esta en .net, interfaz windows.......he probado con sql server, postgresql y mysql, y me sigue saliendo el mismo error.

Te agradezco si me aclaras un poco lo de los SDT's q sería la otra opción, o de pronto si me dijeras un manual en el q pudiera leer al respecto o un sitio web o algo,

Muchas gracias de antemano.
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

RE:AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Leandro (146 intervenciones) el 20/07/2007 15:42:49
Buscalo por GX Technical.

http://www.gxtechnical.com/gxdlsp/pub/home.htm?genexus_8.0_help_system/development_environment/structure_sdt.htm

Buscando bien, vas a encontrar que los SDT pueden definirse con una estructura igual a cualquier transacción, y es muy simple recorrerlos. Si no trabajaste nunca con esto, te aconsejo que te dediques un rato a aprenderlo porque te va sacar de apuros, y explicar las distintas posibilidades por este medio sería muy largo.

Lamento si mi solución no te ayudo. Exitos.
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

RE:AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Andres Estupiñan (10 intervenciones) el 22/07/2007 20:26:31
Gracias por la alternativa de los SDT's Leandro, ya leí en gxtechnical al respecto y cambié un poco mi aplicación para adecuarla a ellos, pero de nuevo se me ha presentado un inconveniente.

En el Workpanel que contiene los datos que deseo pasar a la transacción, digamos que 'subo' los datos al SDT y hasta ahí todo está bien.

Despues de esto, debo llamar al Procedimiento para hacer la inserción con el comando 'New' en mi base de datos y acá es donde se me presenta el problema....

Estoy haciendo esto-----> Call(PVerificarCantidad,&Orden1)

Donde Pverificarcantidad es mi procedimiento y &Orden1 el SDT, pero el compilador de genexus me dice que no se pueden hacer llamados con Call(), usando como parametro de llamada un SDT.

Te agradezco si de pronto sabes que debo hacer.
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

RE:AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por abner (1 intervención) el 15/03/2012 18:48:26
En vez de Call usa UDP
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

RE:AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Gustavo (1 intervención) el 28/05/2012 16:52:15
Marca error por que no se puede pasar una sdt como para metro lo que debes hacer es pasar la sdt a tu procedimeinto por medio de una variable de sesion ya que genexus no puede pasar un objeto tipo collection a una variable cadena, para eso es mas o menos asi:

&Session.Set('DatosCredito',&SDTSimulacionParcialidades.ToXml())

Donde :

&Session es una variable de tipo Web sesion
"Datos credito" es un identificador
&SDTSimulacionParcialidades es la SDT que esta cargada con los datos

y en el procedimiento lo recibes asi

&SDTSimulacionParcialidades.FromXml(&Session.Get('DatosCredito'))

y para recorrer la sdt y hacer el new lo harias asi:



For &SdtItem in &SDTSimulacionParcialidade

New

EndNew


EndFor

Donde &SdtItem es una variable sdt.item y ya solo recuperas los datos que necesites por para hacer el insert
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
sin imagen de perfil
Val: 17
Ha mantenido su posición en GeneXus (en relación al último mes)
Gráfica de GeneXus

AGREGAR REGISTROS A TRANSACCION CON DOS NIVELES

Publicado por Julio (305 intervenciones) el 20/03/2012 00:15:17
Prueba lo siguiente: en el procedimiento que inserta los registros se debe recibir los parámetros de esta forma:

parm(in:&ArtCod ,in:&ArtDsc ,in:&RqsCnt );
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