In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Recorrer dbf con skip no va

Foro público de Xailer en español
Responder
JavierCantarero
Mensajes: 36
Registrado: Mié Jul 23, 2014 10:26 am

Recorrer dbf con skip no va

Mensaje por JavierCantarero »

Buenas, os pongo en situación; estoy añadiendo registros en un tbbrowse a una dbf, de manera que en la columna de codigo no hago get y tengo puesto en el dataset en el método OnPostAppend la siguiente funcion:
METHOD OKNewRegistro( oSender ) CLASS MainIva
Local nRegAct := ::oDbfIVA:Recno()
Local cCodNew

::oDbfIVA:OrdSetFocus("CODIGO")
// DESDE AQUI ESTA PARA DEPURAR

::oDbfIVA:GoTop()

WHILE !::oDbfIVA:Eof()

MsgInfo( ::oDbfIVA:codigo )

::oDbfIVA:Skip()

END
// HASTA AQUI LA DEPURACION

::oDbfIVA:GoBottom()

::oDbfIVA:Skip(-1)

cCodNew := Right( "00" + AllTrim( Str( Val( ::oDbfIVA:codigo ) + 1 ) ), 2 )

::oDbfIVA:Goto( nRegAct )

::oDbfIVA:Edit(.T.)
::oDbfIVA:codigo := cCodNew
::oDbfIVA:Update()

::oBrwIva:Refresh()
RETURN Nil

Bueno, pues los "Msginfo" siempre me dan vací­o, es como si no recorriera la dbf sino el tbbrowse y "cCodNew" siempre es "01"
¿que estoy haciendo mal, por favor?
Muchas gracias
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Recorrer dbf con skip no va

Mensaje por Carlos Ortiz »

Proba de quitar el enlace del dataset al browse con
::oDBBrowseEnca:oDataSet:lUpdLinked:=.f.
justo antes del recorrido
cuando termines lo enlazas de nuevo
::oDBBrowseEnca:oDataSet:lUpdLinked:=.t.
Carlos
El 04/03/2015 a las 09:00, Javier Cantero escribió:
> Buenas, os pongo en situación; estoy añadiendo registros
> en un tbbrowse a una dbf, de manera que en la columna de
> codigo no hago get y tengo puesto en el dataset en el
> método OnPostAppend la siguiente funcion:
>
> METHOD OKNewRegistro( oSender ) CLASS MainIva
>
> Local nRegAct := ::oDbfIVA:Recno()
> Local cCodNew ::oDbfIVA:OrdSetFocus("CODIGO")
>
> // DESDE AQUI ESTA PARA DEPURAR
> ::oDbfIVA:GoTop()
> WHILE !::oDbfIVA:Eof()
> MsgInfo( ::oDbfIVA:codigo )
> ::oDbfIVA:Skip()
> END
>
> // HASTA AQUI LA DEPURACION
> ::oDbfIVA:GoBottom()
> ::oDbfIVA:Skip(-1)
> cCodNew := Right( "00" + AllTrim( Str( Val(
> ::oDbfIVA:codigo ) + 1 ) ), 2 )
> ::oDbfIVA:Goto( nRegAct )
> ::oDbfIVA:Edit(.T.)
> ::oDbfIVA:codigo := cCodNew
> ::oDbfIVA:Update()
> ::oBrwIva:Refresh()
>
> RETURN Nil
>
> Bueno, pues los "Msginfo" siempre me dan vací­o, es como si
> no recorriera la dbf sino el tbbrowse
> ¿que estoy haciendo mal, por favor?
>
> Muchas gracias
JavierCantarero
Mensajes: 36
Registrado: Mié Jul 23, 2014 10:26 am

Recorrer dbf con skip no va

Mensaje por JavierCantarero »

No funciona, ahora mismo funciona de esta manera (pongo el metodo completo ):
Local nRegAct := ::oDbfIVA:Recno()
Local cCodNew

::oDbfIVA:OrdSetFocus("CODIGO")
:oDbfIVA:GoBottom()
cCodNew := Right( "00" + AllTrim( Str( Val( ::oBrwIva:aCols[1]:Value ) + 1 ) ), 2 )
::oDbfIVA:Goto( nRegAct )
::oDbfIVA:Edit(.T.)
::oDbfIVA:codigo := cCodNew
::oDbfIVA:Update()

::oBrwIva:Refresh()

Como veis cojo el valor del tbbrowse, pero no creo que así­ esté correcto, porque esto es una tabla de tipos de IVA, que se añadirá cada 4 años como mí­nimo (lo que dura una legislatura, jejeje), pero otra tabla donde puedan acceder mas usuarios a la vez me pueden crear registros con el mismo código.
Ayuda.....
Muchas gracias
Responder