anonymous Log in
Search
Recents:
v3.0
sd
INSERT en una TRN de dos niveles
27/11/19 23:22

oscar.dmarcos

Replies: 14

Que tal buen día,

Tengo una TRN de 2 niveles como se muestra a continuación:


Aplique el WWSD, y en la sección Ingredientes (Layout View), agregue el
botón para realizar inserts en el segundo nivel de la TRN Comidas de la
siguiente manera:


Y en la sección del segundo nivel (en el Layout Edit), solo agregue el botón
de salvar con el siguiente código:



Pero cuando ejecuto en el emulador y trato de salvar el producto que quiero
agregar me sale el siguiente error:



¿Alguna idea a que se deba esto?, ¿o de como deba de realizar el llamado al
insert del segundo nivel?


Sin más por el momento agradezco su atención y apoyo.

Saludos.




M.T.I. Oscar D’Marcos
Consultor GeneXus
Gerencia de Aplicaciones Móviles
<mailto:oscar.dmarcos@mail.telcel.com> oscar.dmarcos@mail.telcel.com
Tel. 52 (55) 25813700 Ext. 7655
Replies

wilman salazar

28/11/19 04:15
Hola amigo, De acuerdo al diseño, en la ejecuciòn de la ETL al hacer el save en la tabla principal tambien realiza el guardado para el detalle..por lo que al realizar save en el segundo ya hizo commit y genero un registro. has pensado en separarlo en 2 TRN con ETL separadas...la segunda con las dos llaves (la de la tabla principal y la llave del detalle) saludos El mié., 27 nov. 2019 a las 19:22, Oscar D Marcos Herrera (< oscar.dmarcos@mail.telcel.com>)

slealcat@gmail.com

28/11/19 15:03
hola Oscar, te comento que yo tuve un problema similar y lo arregle así. en la transacción comidas definite un atributo que se llame ComidasUltimaLinea numeric(4) y las RULES de la transacción ponele esta linea serial(ProductoID, ComidasUltimaLinea,1); espero te sea de ayuda saludos desde Guatemala On Wed, Nov 27, 2019 at 6:22 PM Oscar D Marcos Herrera < oscar.dmarcos@mail.telcel.com>

oscar.dmarcos

28/11/19 16:04
Antes que nada muchas gracias por tu respuesta Wilman. No puedo cambiar la TRN porque tengo el ambiente WEB con esta estructura, he tratado de realizar el registro del segundo nivel utilizando BC en un Panel SD (como se muestra en la siguiente imagen )pero sin éxito, debido a que la variable basada en la TRN Comidas en su nivel Ingredientes no tiene el campo ProductoId.

oscar.dmarcos

28/11/19 17:13
Antes que nada gracias por tu respuesta Sergio. Realice lo que comentas pero al realizar la especificación me salieron los siguientes errores Al parecer tiene problemas con el tipo de atributo, ya que ProductoId es de tipo GUID. Saludos.

slealcat@gmail.com

28/11/19 20:06
yo lo tengo así y funciona muy bien. en todo caso ponelos a todos con el mismo tipo de dato. [image: image.png] [image: image.png] On Thu, Nov 28, 2019 at 11:14 AM Oscar D Marcos Herrera < oscar.dmarcos@mail.telcel.com>

wilman salazar

29/11/19 01:54
Oscar, puedes contarme un poco la funcionalidad para ayudarte un poco màs? es decir, el producto hace parte de la trn de encabezado ? el producto es un dato de entrada o lo seleccionas de algùn lado? selecciona la comina y despues los ingredientes? El jue., 28 nov. 2019 a las 11:04, Oscar D Marcos Herrera (< oscar.dmarcos@mail.telcel.com>)

oscar.dmarcos

29/11/19 15:20
Que tal buen día Wilman, Gracias nuevamente por tu respuesta, a continuación la estructura de las transacciones y de las tablas de cómo están relacionadas. Saludos.

wilman salazar

29/11/19 15:47
perfecto, el modelo está bien y el problema se presenta cuando: a. intentas agregar un mismo producto a una o varias comidas? b. intentas agregar un producto a una comida en el momento de guardar? El vie., 29 nov. 2019 a las 10:21, Oscar D Marcos Herrera (< oscar.dmarcos@mail.telcel.com>)

oscar.dmarcos

29/11/19 15:56
De acuerdo a tus preguntas es la letra b. Después de seleccionar en el “List” de comidas un registro, se me presentan dos “tabs”, uno general y otro de ingredientes, en el “tab” de ingredientes “layout View” yo agregue un botón para insertar ingredientes a una comida, el problema es que me sale un mensaje de que ya existe el registro Saludos.

wilman salazar

29/11/19 16:39
ok..si en modo insert le diste guardar a la comida lo que debería pasar es que haga un return, sin embargo si darle guardar esta programado que quede abierta la trn para despues insertar el detalle o los productos te va a sacar el mensaje que tienes actualmente porque ya internamente guardo la llave de la comida y el detalle con llave de la comida y la llave del producto....entonces deberia hacer en modo update para que puedas modificar el detalle o los productos.....se podría en modo insert hacer un solo guardar una vez ingrese un detalle o producto para controlar que al menos una comida tiene por lo menos un ingrediente. El vie., 29 nov. 2019 a las 10:57, Oscar D Marcos Herrera (< oscar.dmarcos@mail.telcel.com>)

oscar.dmarcos

29/11/19 19:42
Muchas gracias por tu respuesta Wilman, ya lo pude resolver creando una nueva TRN solo con el 2do nivel (Ingredientes) y realizando el llamado en modo insert enviado el parámetro de ComidaId. Nuevamente te agradezco tus respuestas y tú atención. Saludos.

wilman salazar

29/11/19 20:09
Con gusto amigo, realmente ese era el sentido que te proponía al principio. Estamos para ayudarnos y cualquier aporte o idea que necesites con gusto te lo aportaré. El vie., 29 nov. 2019 a las 14:43, Oscar D Marcos Herrera (< oscar.dmarcos@mail.telcel.com>)

john

30/11/19 15:08
Hola Oscar como estas?, estaba leyendo el hilo de los mensajes, también me ha pasado lo mismo, pero lo he solucionado de otra manera, sin tener que realizar transacciones paralelas o separando transacciones, este tipo de cosas lleva a una mayor complejidad a la hora de hacer mantenimiento a las Trns, además de complicarse un poco más si usas esas mismas transacciones en ambiente web. Lo que me dio muy buen resultado es crear un SDPanel con Variables (con los mismos nombres de los atributos del segundo nivel) y cuando el usuario presiona el botón “Guardar” lo haces mediante un procedimiento. Esta puede ser otra opción a la hora de solucionar este problema. Saludos John.-

wilman salazar

30/11/19 16:00
O incluso usando BC haciendo el save y heredando las reglas de la transacción, con eso evitas hacer prc adicionales y trabajas dentro de un panel a tu gusto John El sáb., 30 nov. 2019 a las 10:30, John A. Borges ()


Back to sd