Hola!
Estoy haciendo una pequeñisima aplicación para probar algunos detalles, y me encontré con el siguiente problema. Debe ser de sencilla resolucion, pero básicamente no puedo terminar de configurar la carga externa de una columna a través de una carga manual. Estuve mirando el proyecto referencia y pareciera estar bien.
Debe ser sin duda una coma que olvido en algún lado. Los resultados del ABM que tengo hecho presentan los siguientes problemas:
no se muestra el campo cargado en forma externa en el cuadro
al presionar seleccionar (para editar) en el cuadro muestran el siguiente error: AP_TABLA_DB: ERROR El método de carga no devuelve los campos clave, no se puede adjuntar los datos externos
Les adjunto la definición de la tabla externa y el código a través del cual se obtendría el dato para cada fila.
Cabe aclarar que el método obtener_posiciones también lo utilizo en el formulario para cargar las opciones en el combo asociado al campo.
El alta funciona correctamente y los campos son bien registrados en la tabla.
Esto es porque no se carga correctamente el campo, mas abajo te cuento. De todas maneras y a futuro… quizas los cuadros te convendria cargarlos con una SQL en lugar del datos_tabla, luego en la seleccion cargas el datos_tabla con el registro a editar, te trae menos preocupaciones con cursores etc.
2) al presionar seleccionar (para editar) en el cuadro muestran el siguiente error: [b]AP_TABLA_DB: ERROR El método de carga no devuelve los campos clave, no se puede adjuntar los datos externos [/b]
Cabe aclarar que el método obtener_posiciones también lo utilizo en el formulario para cargar las opciones en el combo asociado al campo.
El alta funciona correctamente y los campos son bien registrados en la tabla.
El tema es el siguiente, la carga de columnas externas se puede hacer de manera serializada o masiva:
Serializada: Por cada columna externa y cada registro cargado en el datos_tabla, se hara una consulta para recuperar el valor de la columna externa. El formato que devolves en el metodo obtener_posicion esta correcto. Este metodo se usa para recuperar los valores en las altas y modificaciones o cuando no esta presente la carga masiva.
Masiva: Por cada columna externa, se hace una sola consulta para recuperar los valores de todos los registros. Como realizo una sola consulta para todos los registros… .luego necesito una forma de matchear dichos resultados con los registros originales… sino mezclo esparragos con reactores nucleares. Lo que se necesita entonces es que el metodo ademas de devolver el resultado (en formato asociativo), devuelva tambien los parametros que recibe como parte del resultado. Por ejemplo:
Si envio como parametros al metodo lo siguiente array(‘id_pescado’ => 1, ‘id_pescado’ => 15), lo correcto es que el resultado devuelto llegue de la siguiente manera:
De esta forma se puede matchear la descripcion al valor original entregado al metodo.
En tu caso el metodo obtener_posiciones deberia retornar un arreglo asociativo con las componentes ‘posicion’ y ‘posicion_nombre’.