error modificando un form_ml

Hola como están??

tengo un problema con un form_ml, cuando sincronizo la tabla después de modificar o eliminar una fila me sale el siguiente error:


MENSAJE: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near ";" LINE 1: DELETE FROM public.catedras_instancias WHERE ; ^

SQL: DELETE FROM public.catedras_instancias WHERE ;

deja el WHERE en blanco y por eso sale el error, pero no se cual es el problema

tengo toba 2.3 en debian 6, dejo el log de toba:


toba_error_db: <p><b>SQLSTATE:</b> db_42601</p><p><b>CODIGO:</b> 7</p><p><b>MENSAJE:</b> SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near ";" LINE 1: DELETE FROM public.catedras_instancias WHERE ; ^</p><p><b>SQL:</b> DELETE FROM public.catedras_instancias WHERE ;</p> [TRAZA]
exception 'toba_error_db' with message 'Un carácter, símbolo o cláusula no es válida o no se encuentra.' in /home/seba/proyectos/2.3/php/lib/db/toba_db.php:560
Stack trace:
#0 /home/seba/proyectos/2.3/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php(773): toba_db->sentencia_ejecutar(0)
#1 /home/seba/proyectos/2.3/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php(610): toba_ap_tabla_db->ejecutar_sql('DELETE FROM pub...', 3)
#2 /home/seba/proyectos/2.3/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php(478): toba_ap_tabla_db->eliminar_registro_db(3)
#3 /home/seba/proyectos/2.3/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php(444): toba_ap_tabla_db->sincronizar_eliminados(Array)
#4 /home/seba/proyectos/2.3/php/nucleo/componentes/persistencia/toba_datos_tabla.php(1540): toba_ap_tabla_db->sincronizar()
#5 /home/seba/proyectos/2.3/proyectos/segcursados/php/operaciones/catedra/ci_catedra.php(99): toba_datos_tabla->sincronizar()
#6 /home/seba/proyectos/2.3/php/nucleo/componentes/interface/toba_ci.php(282): ci_catedra->evt__procesar('undefined')
#7 /home/seba/proyectos/2.3/php/nucleo/componentes/interface/toba_ci.php(204): toba_ci->disparar_evento_propio()
#8 /home/seba/proyectos/2.3/php/nucleo/toba_solicitud_web.php(135): toba_ci->disparar_eventos()
#9 /home/seba/proyectos/2.3/php/nucleo/toba_solicitud_web.php(55): toba_solicitud_web->procesar_eventos()
#10 /home/seba/proyectos/2.3/php/nucleo/toba_nucleo.php(69): toba_solicitud_web->procesar()
#11 /home/seba/proyectos/2.3/proyectos/segcursados/www/aplicacion.php(24): toba_nucleo->acceso_web()
#12 {main}

saludos!

Hola Sebastian,

te hago una consulta, el objeto DT que estas usando… tiene algun campo marcado como clave?.

El resto de las columnas de la tabla, son simples, binarias, externas?

Saludos

Hola Richard,

si, tiene un campo clave y todos los campos son de tipo entero o caracter, no tiene columnas externas.
el DT está dentro de una relación, probé sincronizando solamente ésta tabla pero igual da error

la relación se carga bien, y puedo agregar lineas en el form_ml y sincronizar correctamente, el problema es cuando modifico o elimino una fila

Hola Sebastian,

si esta dentro de una relacion… entonces sincroniza toda la relacion, sincronizar la tabla unicamente puede traer inconvenientes si tiene registros que dependen de valores en el padre.

Te preguntaba si tenia clave porque me llama la atencion que no se esten agregando las columnas correspondientes.
Estos objetos de persistencia tienen alguna subclase?
Podrias pegarme una imagen con la definicion de la relacion y de cada tabla que la compone?.

Mencionas que estas utilizando un ML, para propagar los cambios a los elementos de persistencia, que funcion estas usando?

Saludos

Hola Richard, solucioné el problema!

en la pantalla “columnas” del DT, elimine las filas y volví a cargar los campos con el botón “leer metadatos DB” y ahí anduvo, es muy raro porque yo no lo había modificado y quedó con los mismos campos que antes (tampoco había modificado nada en las tablas de la base de datos)

los objetos no tienen subclases y utilizo la función procesar_filas() (en el evento modificación del form_ml) y en el evento guardar uso sincronizar() para la relación

gracias!! saludos!

Hola Sebastian,

evidentemente si con eso se arreglo, es que algo habia mal en los metadatos que se guardaron en la bd.

Lastima que en estos casos es complicado poder replicar el problema y encima, la solucion que no te permite entender porque falla.

Cualquier otro detalle que encuentres no dudes en postearlo.

Saludos