• Martes 19 de Noviembre de 2024, 03:34

Autor Tema:  Codigo correlativo en PB  (Leído 2548 veces)

caronte90

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Codigo correlativo en PB
« en: Domingo 26 de Abril de 2009, 00:25 »
0
Bueno tengan un grato saludo y agradeceles de antemano.
El problema que tengo es que estoy tratando de desarrollar una aplicacion en la cual el codigo se autogenere de manera correlativa inluyendo la letra "E" de egreso o la "I" de ingreso, ejemplo:

E001
E010
E100

I001
I010
I100

bueno y logicamente que cada vez que cierre laaplicacion cuando vuelva abrir pueda continua la numeracion.
Intente hacer con un archivo ini, inicializandolo en 1, extrayendo el valor y tratando de volver a grabarlo, el problema es que no puedo grabar el numero cuando coloco el codigo
"SetProfileString"
no se como enviar el valor de la variable. y si hubiese otro modo bueno estoy abierto a las opiniones, muy agradecido.

ptres

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Codigo correlativo en PB
« Respuesta #1 en: Viernes 3 de Julio de 2009, 19:15 »
0
Estimado:
Este script te genera el correlativo del codigo y te agrega la fila de tu dw, no olvides dejar en "0" el Tab Order para que no se modifique y lo otro que en tu consulta SQL del dw tienes que relizar un ORDER BY ASC; para cualquier tipo de duplicacion de codigo espero que se sirva, me avisas cualquier problema. Suerte.  :)


long ll_cant, ll_fila
string ls_correlativo

dw_1.SetTransObject(SQLCA)

ll_fila = dw_1.InsertRow(0)
dw_1.SetFocus()
dw_1.ScrollToRow(ll_fila)
IF ll_fila = 1 THEN
SELECT count(convert(int,RIGHT(ac_codigo,3)))
INTO :ll_cant
from activos_m;  
ELSE
ll_cant = long(right(dw_1.GetItemString(ll_fila - 1,"ac_codigo"),3))
END IF
ll_cant += 1
ls_correlativo = string(ll_cant,'AC000')
dw_1.SetItem(ll_fila,"ac_codigo",ls_correlativo)

vmendoza

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Codigo correlativo en PB
« Respuesta #2 en: Domingo 5 de Julio de 2009, 23:54 »
0
Existen Muchas las formas de crear un autogenerado.

YO por ejemplo, uso una tabla, en la cual me sirve como metadata de mis demas tablas... (quiero decir, que tengo una tabla donde indico el nombre de la tabla, entre otros campos, y 3 campos: PREFIJO, SUFIJO, AUTONUMERO) de las cuales PREFIJO y SUFIJO oueden ser vacios.

entonces... para mi tabla que se llame MOVIMIENTOS: el registro dentro de mi tabla seria
Cod.          Descripcion                   Estado              Prefijo         Sufijo        Autonumero
TBL0001   MOVIMIENTOS                 A                      E                 null           0

Entonces al momento de programar. concateno los campos PREFIJO + STRING(AUTONUMERO + 1,'000') + SUFIJO
el string(1,'000') devuelve  001,
  string(46,'000') devuelve 046,
del ejemplo devolveria E001

Ahora el truco esta en este codigo debe generarse justo antes de guardar el registro nuevo.
Si lo que ha guardado a sido satisfactorio osea
si dw_x.update()=1 entonces debo actualizar el campo AUTONUMERO del registro con codigo TBL0001.

Cod.          Descripcion                   Estado              Prefijo         Sufijo        Autonumero
TBL0001   MOVIMIENTOS                 A                      E                 null           1

La siguiente vez que insertes uno nuevo devolvera E002 y asi sucesivamente...

PERO SI AL MOMENTO DE GUARDAR OCURRIO UN ERROR
no debe actualizarce AUTONUMERO, ya que no se inserto registro.

Salu2