UNPA_Problema con numeración de libros

Buen día, queria consultar como solucionar un inconveniente que se nos presento con la numeración de un libro donde llegamos al número 999, y viendo la tabla u842_lbr_crrera_ua, esa columna es un varchar de 3 caracteres. Estamos trabajando con el SIU-GUARANI 2.6.5.

Quedamos a la espera de su respuesta.
Saludos

Esa esa una tabla personalizada donde llevan la numeración de las actas de los libros.
Deben ampliar el campo. Como es varchar, podrian ampliar a varchar(5):

ALTER TABLE u842_lbr_crrera_ua MODIFY ( nombre columa varchar(5));

Ver sentencia para cambiar el tipo de dato de una columna: [IBM Documentation]

Y ver el proceso que lee y consulta esa tabla si esta considerando números mayor a 999.

Buen día Alejandro!
Realice la modificación en la tabla y en la DW, ahora estoy configurando las update properties de la misma y necesito saber si lo estoy haciendo bien.
Adjunto imagen de como la deje configurada.

pantalla update properties u842_lbr_crrera_ua

En el cuadro Updateable Coumns debes seleccionar todas los campos de la tabla. (Faltaria “Nombre”)

En el cuadro Unique Key Columns(s) debes seleccionar los campos de la PK de la tabla. Si son esos cuatro, esta bien entonces.

El resto de los seteos de los cuadros de arriba estan bien.

Gracias Alejandro por tu respuesta! Mirando el sql que crea la tabla veo que las Pk de la misma son unidad_academica y carrera. Así que dejaría solo esos dos campos en el cuadro Unique Key Columns(s).
Ahora bien pruebo mediante la opción Run de PowerBuilder y puedo acceder a la operación y veo los cambios realizados, pero pruebo regenerar o crear un nuevo ejecutable y me da el error que no se puede crear.
La verdad que necesito asesoramiento de como generar un nuevo ejecutable.

Saludos Fernando.

No es necesario crear un nuevo ejecutable.
Desde el entorno de Power Builder, seleccioná la libreria donde esta la datawindows que modificaste, boton derecho del mouse selecciona la opcion Build runtime library. Eso va a generar el archivo pbd de la libreria.
Para generar el archivo pbd de la libreria no debes tener ningun objeto de la libreria abierto.

Ese archivo luego lo reemplazas en la carpeta donde esta el exe y los archivos pbd.

Hola Alejandro!
estoy generando el archivo pbd para la libreria, pero tengo la duda de que configurar en el campo Resource File Name, me podrás asesorar?

pantalla regenerar libreria

No pongas nada en ese campo. Igual si lo genera no pasa nada. copias ese archivo en la carpeta del exe

Hola Alejandro!
Desde el entorno de Power Builder, genere el archivo pbd de la librería u842_gexa.pbl donde esta la datawindow que modifique d842_nro_libro_carrera, mediante la opción Build runtime library.
Al remplazar la pbd en el ejecutable, puedo ingresar a la operación y veo los cambios realizados al insertar un nuevo libro de actas para una carrera y también como se guardan los datos en la base, pero al momento de cerrar un libro de actas por que ya se completo con las 200 actas, va de nuevo a la datawindow para ingresar el nuevo nro de libro y me da el mje “Debe cerrar el libro de la carrera”.
Mi consulta radica en que se usa la misma datawindow pero en 2 momentos distintos y en una funciona el cambio y en el otro no.

Para aclarar un poquito mas el ultimo mje.
Realice las siguientes modificaciones en la base de datos:

ALTER TABLE u842_lbr_crrera_ua
MODIFY nro_libro varchar(4);

ALTER TABLE u842_libros_ua
MODIFY nro_libro varchar(4);

y modifique un stored procedure:

CREATE PROCEDURE “dba”.sp842_ins_lib_ua(

pUnidadAcademica LIKE u842_nro_acta_exm .unidad_academica,

pCarrera LIKE u842_nro_acta_exm .carrera,

pLibro LIKE u842_lbr_crrera_ua .nro_libro,

pLibroCarrera LIKE u842_nro_acta_exm .nro_libro_carrera

)

define v_nroLibro like u842_lbr_examen.id_libro;

define nombre like sga_libros_de_acta.nombre;

BEGIN


– Obtiene el numero autoincremental del libro.


select id_libro into v_nrolibro

             from u842_lbr_examen;

– Genera el nombre del Libro de Acta.


 LET nombre = lpad(plibro,4,'0') || '-'|| 

SUBSTR(pUnidadAcademica,LENGTH(pUnidadAcademica)-1 ,2) || '-'||

lpad(pCarrera,3,'0') || '-'||

lpad(pLibroCarrera,2,'0');

– Inserta un registro en la tabla sga_libros_de_acta


    INSERT INTO sga_libros_de_acta

(unidad_academica,

     libro, 

     nombre)

VALUES ( pUnidadAcademica,

             v_nrolibro,

             nombre);

– Inserta un registro en la tabla u842_libros_ua


INSERT INTO u842_libros_ua 

(unidad_academica,

    	 libro, 

    	 carrera,

     	 nro_libro_carrera,

         nro_libro)

VALUES ( pUnidadAcademica,

             v_nrolibro,

             pCarrera,

	 pLibroCarrera,

	 plibro); 

– Inserta un registro en la tabla log_u842_lbr_car para Auditoria.


INSERT INTO log_u842_lbr_car

(unidad_academica,

    	 carrera,

         nro_libro,

     	 nro_libro_carrera,

             usuario,

             fecha_act,

             operacion)

VALUES ( pUnidadAcademica,

             pCarrera,

	 plibro,

	 pLibroCarrera,

             User,

             Current year to Second,

             'I'); 



----------------------------------------------------------------------------------

– Incrementa en uno el nro_libro de la tabla u842_lbr_examen

--------------------------------------------------------------------------------

 Update u842_lbr_examen

     set id_libro= v_nrolibro + 1;

END;

END PROCEDURE;

¿Cuando da este mensaje? Desde que operacion, haciendo que?
Puede ser que tienen un libro de actas para una carrera que esta activo y quieren crear otro para la misma carrera? Es ahi donde les da error?
Vean de cambiar el dato “es_libro_activo” en el libro actual de esa carrera antes de crear el nuevo libro de actas.
select * from sga_libros_de_acta where carrera = ‘codigo carrera’

continua via gds 67380