error -691 en ABM de Comisiones

Hola,
estamos personalizando la operacion ABM de Comisiones, porque necesitan que las comisiones tengan dos atributos nuevos. Los datos de la comisión los guarda y modifica bien, pero al querer Agregar un docente, da el siguiente error: “Uno de los campos contiene un valor que no figura en la tabla original. Referencia dba.fk_doc_com_comis”.
Que puede ser? No modificamos nada de la dw de agregar de docente.

Saludos
Laura

Hola Laura

La ventana que comanda esa operación, primero graba los cambios de las comisiones.
En ese proceso se debería recuperar el serial que se generó.
Luego, con el serial reemplaza el campo en la dw de docentes.

O no se está recuperando el serial, o algo falla.
Fijate en el evento confirmar de la ventana a ver que pasa.

Emilio

Hola Emilio,
Cuando hago la traza, lo que veo es que no recupera el serial, sino que toma valor 0.
Volví a hacer la personalización paso a paso e iba probando.
Copié w_comision, w_detalle_mesa_examen_comision, d_comision, d_comision_det como w839_comision, w839_detalle_mesa_examen_comision, d839_comision, d839_comision_det y modifiqué d839_comision, d839_comision_det para que actualice la tabla personalizada u839_comisiones con ABM Múltiple y al probar crear una comisión con un docente da el error que et comento arriba.
No logro entender que es lo que hace que no se tome el valor serial que corresponde.

Laura

Hola

La d839_comision tiene seteado Identity column? Que control datawindow usas con ella?

Emilio

Hola Emilio,
la dw tiene seteado identiti column

Los datos del dca son
cur00002, 1, w_filtro_comision, uo_dw,dp_periodos_comisiones,uo_tab_filtro,FILT_MAT,dks_materias_comision
cur00002, 2, w839_comision, uo_dw,dks_materias_comision,uo_asignador,uo_dw_autoinc,d839_comision,d_bandahoraria,2,d_docentes_x_comision,d_docentes_busq,d_asignaciones_por_periodo,7,d_esc_not_mat_cur


update u839_com.jpg

update u839_com.png

Hola Laura

En el texto update_dw que apunta a la tabla sga_comisiones tenes el tag IDENTITY=comision?

Emilio

era eso! Gracias Emilio!
Lo puse antes de KEY. Está bien o se debe poner en otro orden?

Gracias de nuevo!

Saludos
Laura

Eso no lo terminó de corregir, porque ahora no guarda la comision creada (será que el orden en update_dw es otro?

No importa el orden pero las distintas claves de ese texto tienen que estar separados por ;

lo puse así:
TABLA=sga_comisiones;IDENTITY=comision;CAMPOS=comision,sede,unidad_academica,materia,anio_academico,periodo_lectivo,nombre,catedra,escala_notas,carrera,plan,grupo_carrera,turno,letra_desde,letra_hasta,capacidad,insc_habilitada,estado;KEY=comision;

y la otra

TABLA=u839_comisiones;IDENTITY=comision;CAMPOS=comision,tipo_comision,es_promocionable;KEY=comision;

pero al confirmar no me dice nada, ni error ni que fue exitoso y al volver a entrar en la operación no está la comisión.
Lo puse en d839_comision y d839_comision_det

sacá este

TABLA=u839_comisiones;IDENTITY=comision;

y veamos que pasa

me vuelve a dar el error -691…

ok. entonces volvé a ponerlo y debuguea a ver que error es el que no está mostrando.
ya veo si tengo los objetos en el mail de tutorias.

Laura

fijate que pasa si a tu tabla le pones el campo comision como serial y no como integer.

Emilio

Emilio,
lo tengo como entero.
create table “dba”.u839_comisiones
(
comision integer,
tipo_comision integer,
es_promocionable char(1),
primary key (comision) constraint “dba”.pk_u839_comisiones
);

Te mandé algunas capturas del debub.

Saludos
Laura

ok. ya las veo.
recuperé los objetos de un mail de tutorias y por eso te decía que pruebes definiendo en esa tabla a comision como un serial.

Hola Emilio,
parece que funcionó con poner en la tabla personalizada comisiones como serial.
Estoy hacendo pruebas!

Mil gracias!!!
Saludos
Laura

No.
Lamento decirte que no.

Te mandé un objeto por tutorias.

Lo del serial te funcionará si no hay impedimentos para cargar registros en la tabla personalizada.
En el caso tuyo tenes una verificacion en el trigger, lo cual provoca que se cargue el registro en sga_comisiones y no en tu tabla.
El rollback volverá todo para atras pero los seriales quedarán desincronizados.
Es un escenario bastante particular pero el uo_dw_autoinc en alguna situación te fallará.
Volvé atras el cambio de la tabla para poner comision como integer y probá el uo que te mandé.

Emilio