Page 1 of 1
Clase Database trae todos los campos del registro(SOLUCION)
Posted:
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
Posted:
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
Posted:
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
Posted:
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
Posted:
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
Posted:
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
Posted:
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)
Posted:
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.