BUG Amargo en rs_ordenar_por_columna

Buena tarde,

Se me presento gran conflicto de cruze de informaciòn al tratar de ordenar un $datos a un ML, al momento de modificar datos de la la primera fila con la segunda y asi sucesivamente.

Hace el ordenamiento por nombre, pero al parecer cruza los datos de las filas.

function conf__form_estudiantes(toba_ei_formulario_ml $componente) {
$componente->set_exportar_excel();
$condicion[‘eno_vigente’] = true;
$datos= $this->get_relacion()->tabla(‘estudiante_notas’)->get_filas( $condicion, true);
$datos = rs_ordenar_por_columna($datos, ‘per_nombres’);
return $datos;

       //return $this->get_relacion()->tabla('estudiante_notas')->get_filas( $condicion, true);

}

Gracias

Hola John,

te voy a pedir un favor, me enviarias un mini-set de datos de lo que te devuelve el get filas?.. una captura de un ei_arbol de los datos podria servir tambien.
Una consulta aparte, seguis trabajando en la version 5.2.x de PHP no?

Saludos
Richard

Definitivamente es un BUGs,
pueden probar sobre cualquier ML producto de un get_relacion();
carga bien los datos, pero al Modificar en la sincronizacion de toba, se troncan las filas, por ejemplo el SET en el sql se hace sobre un estudiante y el WHERE se hace con otro diferente, si NO es porque se tienen las llaves primarias bien definidas, esto pasaria por alto y seria un caos.

Ademas se probo que sucede tanto con rs_ordenar_por_columana, como con la funcion merge que me permite unir varios arrays.

Por ahora son toco salirnos del datos relacion, y no ordenar, pero este proceso es necesario en una lista de estudiantes

Gracias.

Gracias Ingeniero
version php 5.2.5
Con el siguiente codigo, se presenta el cruze de filas al momento de sincronizar, usando el rs_ordenar

function conf__form_preescolar(toba_ei_formulario_ml $componente) {
$componente->set_exportar_excel();
$condicion[‘eno_vigente’] = true;
$datos = $this->get_relacion()->tabla(‘estudiante_notas’)->get_filas( $condicion, true);
$datos = rs_ordenar_por_columna ($datos, ‘per_nombres’);
return $datos;
}

function evt__form_preescolar__modificacion($datos) {
toba::memoria()->set_dato_instancia(‘datos_notas’, $datos);
$this->get_relacion()->tabla(‘estudiante_notas’)->procesar_filas($datos);
}

Adjunto archivo de texto con la carga inicial y el error al sicronizar, igual la grafica del arbol, solamente se realacionan las dos primeras, las otras dos son para consulta no se relacionan.


Hola John,

el inconveniente se debe a lo siguiente:

Esta forma de llamar a get_filas() hace que las claves internas que maneja el datos_tabla se coloquen como claves del arreglo devuelto, al mismo tiempo no se envia una columna extra llamada ‘apex_datos_clave_fila’ que suele llevar la clave interna. Por lo tanto cuando se reciba un set de datos sin dicha columna, se asume que el id de fila se corresponde con la clave del arreglo.

Como las claves son numericas el sort al reordenar el arreglo las cambia (si fueran claves asociativas no pasaria) y entonces es que se produce el entrecruzamiento que mencionas.
Lo que deberias hacer modificar la forma en que recuperas los datos de la tabla, unicamente deberias pasarle como parametro al metodo las condiciones… solo eso.

Saludos
Richard