Vi en el método generar_clausula_subselect($alias_hija) que el mapeo de campos pone la clave principal de la tabla padre: id_afiliado en vez de la clave principal de la tabla hija: id_grupo cuando hago clic en el evento de selección, cómo puedo hacer para cambiar eso?
No podes, o mejor dicho… por que deberias?
Una tabla hija debe tener una FK a la clave de su padre, sino no existe relacion alguna.
Que es lo que queres modelar?.. si hay mas de una tabla involucrada deberias estar usando un datos_relacion, que a su vez contiene varios datos_tabla y es entonces donde cargar todas las tablas a partir de la tabla padre cobra sentido.
Si son 2 tablas sueltas sin relacion, el cuadro deberias cargarlo mediante una SQL y la edicion pertenece a una de las tablas, no a ambas ya que nada las vincula.
Si hay un agrupamiento logico que no se refleja en el modelo, vas a tener que encontrar la manera de modelarlo con los formularios y quizas utilizar una clase de negocio que exprese dicha logica en lugar de un componente de persistencia.
Saludos
Si, la tabla hija tiene la fk a la tabla padre (id_afiliado), pero tengo una pantalla en el ci de la tabla padre (afiliados) donde muestro el cuadro de la tabla hija (grupos_familiares)
Ok, mi pregunta entonces es la siguiente.
- Estas utilizando algun otro objeto de persistencia ademas del DT?
Podrias subirme una imagen del arbol de la operacion?, creo que te puede estar faltando un objeto pero para estar seguro me gustaria ver una imagen.
Si tenes un DR asociado a la operacion, te pediria que me muestres la ultima pestaña (donde definis como se vinculan las tablas).
Saludos
Gracias Ricardo, ya lo pude solucionar, tengo la pantalla pant_grupos donde agregué un ci con varias pantallas, en una de las cuales pongo el cuadro de grupos_familiares y además en este ci agregué un dr(datos_grupos) donde tengo la tabla grupos_familiares con un mínimo y un máximo de 1 registro.
Captura de pantalla de la operación afiliados:
Captura de pantalla del dr:
Bien, veo 2 temas aqui:
-
Hay mas de un DR lo cual es inusual y poco practico, si todas las tablas tienen relacion con un mismo padre… para que separarlas en 2 objetos distintos?
-
Los DRs no estan al mismo nivel, tenes un DR anidado dentro de otro CI… eso te fuerza a realizar una carga manual del mismo, el problema es que unicamente vas a disparar esa carga cuando ingreses al CI-Grupos y necesitas recuperar el
id_afiliado
manualmente. -
Recorda que te pedi captura de la
ultima pestaña
, osea de lasRelaciones
.
Mas alla de eso, creo que tu inconveniente proviene de usar los objetos separados… necesitas realizar 2 cargas distintas y de esta manera tambien deberas manejar las transacciones de forma manual.
Yo intentaria incluir todas las tablas (y sus relaciones) en el DR datos
y luego iria operando sobre las tablas segun necesitara.
Saludos
Esta es la captura de pantalla de las relaciones en el dr:
Cómo puedo solucionar el tema de los grupos_familiares, por ejemplo cuando quiero transformar un integrante de ese grupo familiar en afiliado?
Cuando quiero editar un grupo_familiar ( function evt__cuadro_grupo__seleccion_grupo($seleccion)
) me da este error:
Cuando hace
$this->dep('datos')->cargar($seleccion);
¿cómo hago para que tome la tabla grupos_familiares en vez de afiliados?
Es que no volves a cargar toda la relacion, inicialmente cargas los afiliados… eso por como funciona el DR, te va a cargar los grupos familiares de ese afiliado.
Por ende, para recuperarlos te alcanzaria con algo asi:
$this->dep('datos')->tabla('grupos_familiares')->get_filas();
Si necesitas agregar un grupo nuevo, de la misma forma harias
$this->dep('datos')->tabla('grupos_familiares')->nueva_fila($datos);
Donde $datos
no tendria fijado el id_afiliado
, ya que el mismo se define desde el padre cargado.
¿Cómo hago para cargar un grupo familiar para editarlo sin que me ponga la tabla afiliados en el evento de selección del grupo?
Y cuando hago clic en el botón agregar para agregar un nuevo registro en la tabla grupos_familiares me da este error:
Por favor contéstenme esta pregunta, necesito solucionarlo con urgencia
Por favor necesito una respuesta, tengo que resolverlo con urgencia.
Como tenes armada la relacion no podes, estas en una operacion de Afiliados
la entidad principal por ende son los afiliados… no lo grupos familiares, algo en todo esto esta torcido.
O necesitas una operacion aparte de Grupos Familiares
o tenes las FK invertidas o estas usando el componente incorrecto para asociar una cosa con otra, ojo asociar no es editar… es simplemente decir ‘este afiliado esta en tal grupo familiar’.
Preguntate lo siguiente … el grupo familiar, existe sin afiliados? eso te determina quien es el padre en la relacion.
Si existe entonces tenes las FKs invertidas, porque el grupo familiar es el padre y los afiliados tienen la FK… entonces si queres editar grupos familiares, haces un ABM de grupos familiares.
La respuesta es que el grupo familiar pertenece al afiliado, es así en cualquier sindicato, obra social, etc., en estos tenes un afiliado o beneficiario y este agrega a sus hijos, esposo/a, etc.
Creé una operación ABM Simple con la tabla grupos_familiares y agregué la tabla afiliados en el datos_relacion, pero ahora estoy teniendo un problema para convertir un grupo familiar en afiliado, creo que debe ser porque puse como tabla padre a la tabla afiliados, ¿cómo puedo hacer para cargar un grupo familiar en el evento de selección del cuadro sin cargar al afiliado para que no me de error de atributo inexistente?
Por favor, respondanme esta pregunta, estoy estancado con esto y necesito resolverlo con urgencia
Ya lo solucioné usando el método toba::tabla(nombre_tabla)
y funciona realmente excelente.