Page 1 of 1

Clase Database trae todos los campos del registro(SOLUCION)

PostPosted: Sun Aug 21, 2011 5:46 am
by Compuin
Saludos grupo,

Estoy usando la clase Tdatabase para mantener un archivo

oDbf:=tDatabase():New()

Al llamar el dialogo de carga uso este codigo

IF lNuevo
oDbf:BLANK()
oDbf:GOBOTTOM()
oDbf:BCO_CODIGO := StrZero((VAL(oDbf:BCO_CODIGO) +1), 12)
ELSE
oDbf:LOAD()
ENDIF

Si el registro es nuevo, agrega uno en blanco pero el campo para el codigo lo quiero generar desde una numeracion correlativa. Si es modificacion, mostrara el registro completo.

El problema que estoy teniendo es que en ambos casos trae el registro completo, es decir, al intentar uno nuevo trae el correlativo y tambien el resto de los campos, no permitiendo ingresar datos nuevo. Solo quiero traer el campo del codigo cuando sea uno nuevo

Como se podria solventar esta situacion? Agradezco de antemano

Re: Clase Database trae todos los campos del registro

PostPosted: Sun Aug 21, 2011 5:51 am
by Antonio Linares
Parece que en tu codigo estas dos lineas deberian ir al reves:

oDbf:BLANK()
oDbf:GOBOTTOM()

a:

oDbf:GOBOTTOM()
oDbf:BLANK()

Re: Clase Database trae todos los campos del registro

PostPosted: Sun Aug 21, 2011 6:12 am
by Compuin
Antonio,

Gracias por tu valiosa sugerencia. Ya lo intente y al invertir las lineas el comportamiento es que deja de generar el correlativo, es decir

oDbf:BCO_CODIGO := StrZero((VAL(oDbf:BCO_CODIGO) +1), 12)

no es capaz de continuar con el siguiente numero. Genera la numeracion en 1. Aparentemente

oDbf:BLANK()

esta reiniciando a 1 la continuacion de los numero.

Re: Clase Database trae todos los campos del registro

PostPosted: Sun Aug 21, 2011 7:40 am
by Antonio Linares
La secuencia sería:

1. Calculas el nuevo código:

oDbf:GOBOTTOM()
cBCO_CODIGO := StrZero((VAL(oDbf:BCO_CODIGO) +1), 12)

2. Añades un nuevo registro

oDbf:Append()
oDbf:BCO_CODIGO = cBCO_CODIGO

3. El usuario rellena los datos

Re: Clase Database trae todos los campos del registro

PostPosted: Sun Aug 21, 2011 3:59 pm
by Compuin
Antonio,

Probe y sigue en mismo comportamiento. Lo que deseo es que al cargar el nuevo registro solo muestre el Get con el codigo y e numero consecutivo y el resto de los gets vengan vacios para cargar el nuevo registro. Lo que esta pasando es que se esta trayendo todos los campos y los rellena en los gets

Re: Clase Database trae todos los campos del registro

PostPosted: Sun Aug 21, 2011 4:18 pm
by Pedro
Hola
Si lo quieres hace como lo tenías al principio

IF lNuevo
oDbf:GOBOTTOM()

BCO_CODIGO := StrZero((VAL(oDbf:BCO_CODIGO) +1), 12)
oDbf:BLANK()
oDbf:BCO_CODIGO := BCO_CODIGO

ELSE
oDbf:LOAD()
ENDIF


Una vez rellenado los campos haces el oDbf:Append() y el oDbf:Save()
El tema está en que cuando traes el último numero lo asignes a una variable, a continuación pongas en blanco el buffer y luego asignes el número al campo correspondiente del buffer.

Re: Clase Database trae todos los campos del registro

PostPosted: Sun Aug 21, 2011 4:28 pm
by Compuin
Antonio, Pedro,

De esta ultima manera funciona OK. Gracias a ambos por su valiosa ayuda!

Saludos

Re: Clase Database trae todos los campos del registro(SOLUCION)

PostPosted: Mon Aug 22, 2011 3:52 am
by joseluisysturiz
Saludos, para un mejor control te recomendaria que hicieras una DBF de 1 solo registro, donde controles los correlativos, es lo mas sano y seguro, asi puedes vaciar tu tabla de banco cuando quieras y no perderas tu correlativo, es una simple idea, y funciona perfecta.saludos. :shock: