FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase Database trae todos los campos del registro(SOLUCION)
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Clase Database trae todos los campos del registro(SOLUCION)
Posted: Sun Aug 21, 2011 05:46 AM

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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase Database trae todos los campos del registro
Posted: Sun Aug 21, 2011 05:51 AM

Parece que en tu codigo estas dos lineas deberian ir al reves:

oDbf:BLANK()
oDbf:GOBOTTOM()

a:

oDbf:GOBOTTOM()
oDbf:BLANK()

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase Database trae todos los campos del registro
Posted: Sun Aug 21, 2011 06:12 AM

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.

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase Database trae todos los campos del registro
Posted: Sun Aug 21, 2011 07:40 AM

La secuencia sería:

  1. Calculas el nuevo código:

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

  1. Añades un nuevo registro

oDbf:Append()
oDbf:BCO_CODIGO = cBCO_CODIGO

  1. El usuario rellena los datos
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase Database trae todos los campos del registro
Posted: Sun Aug 21, 2011 03:59 PM

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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Clase Database trae todos los campos del registro
Posted: Sun Aug 21, 2011 04:18 PM
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.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase Database trae todos los campos del registro
Posted: Sun Aug 21, 2011 04:28 PM

Antonio, Pedro,

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

Saludos

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Clase Database trae todos los campos del registro(SOLUCION)
Posted: Mon Aug 22, 2011 03:52 AM

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:

Dios no está muerto...



Gracias a mi Dios ante todo!

Continue the discussion