Hola!!!
Una consulta: intento modificar la calidad de un alumno (operacion mat00016) desde el cliente y me da error (Error de base de datos -691: Uno de los campos contiene un valor que no figura en la tabla original.)
Agregué 2 nuevos motivos de cambio de calidad del alumno y eliminé otros q no utilizo.
El servidor funciona sin problemas.
Gracias
Natalia
Hola Natalia, la operación está personalizada?
Lo que podés hacer es ejecutar el siguiente comando:
onstat -u
. Esto te mostrará un resultado de tipo:
Informix Dynamic Server 2000 Version 9.21.UC3 -- On-Line -- Up 00:49:23 -- 146592 Kbytes
Userthreads
address flags sessid user tty wait tout locks nreads nwrites
11839018 ---P--D 1 informix - 0 0 0 18 51
11839608 ---P--F 0 informix - 0 0 0 0 45
11839bf8 ---P--F 0 informix - 0 0 0 0 410
y copia el valor de la columna sessid del usuario con el que se conectan a gestión y que realiza la operación de cambio de calidad. Luego ejecutá el siguiente comando antes de ejecutar la operación con Guaraní:
onstat -g ses numero_de_sessid -r 1
Este comando se ejecutará cada 1 segundo y te mostrará, entre otras cosas, la última sentencia SQL de la sesión en cuestión:
Luego probá ejecutar la operación y luego de que emita el error, cortá la ejecución del comando de consola con:
ctrl + c
y fijate si ahí se observa sobre que tabla/campo es que emite el error.
Saludos
Hola Damian!
La consulta es:
SELECT dba.sga_motivoscalidad.motivo,
dba.sga_motivoscalidad.desc_abreviada,
dba.sga_motivoscalidad.descripcion,
dba.sga_motivoscalidad.calidad
FROM dba.sga_motivoscalidad
WHERE dba.sga_motivoscalidad.estado = ‘A’ AND dba.sga_motivoscalidad.calidad = ‘N’
y devuelve:
3 Pase Pase a otro establecimiento educativo N
5 Baja Baja por inasistencias (20) sin pedido de reincorporación N
Que son los motivos que he agregado a la DB.
Alguna sugerencia?
Muchas gracias!
Fijate si no te muestra una sentencia del tipo UPDATE
o INSERT
, ya que son estas las que modifican datos en las tablas y ahí es que se genera el error. Si no se vé en la salida del comando ninguna de estas, podrías revisar el sp asociado al trigger de update de la tabla sga_alumnos.
Hola Natalia
el spu_alumnos tiene lo siguiente
-- Por default selecciono un motivo.. Despues debe ser actualizado
IF n_calidad = 'A' THEN
LET viMotivo = 1;
ELIF n_calidad = 'E' THEN
LET viMotivo = 2;
ELIF n_calidad = 'P' THEN
LET viMotivo = 3;
ELIF n_calidad = 'N' THEN
LET viMotivo = 4;
END IF;
por lo que vos decis, no existe el motivo 4 con calidad=N.
Lo borrastes al motivo 4?
Emilio
Hola!
Si, borré los motivos que no usaría.
Ahora los agregué y funcionó sin problemas.
Muchas gracias!
Me alegro
Si no necesitas un motivo o no te conviene tenerlo, dalo de baja
dba.sga_motivoscalidad.estado = ‘B’
y no te lo mostrará, pero seguirá estando en la base de datos.
Lo que si tenes que tener es al menos un motivo por calidad de alumno.
Emilio