XBase - Como trabajo PushButton() DbGoBottom y DbGoTop

 
Vista:

Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por Ribo Salamanca (4 intervenciones) el 22/04/2009 01:10:45
Hola todos

Tengo abierta la tabla, indexada con alias MAESCON y en modo compartido y al ir al ultimo o al primer registro obtengo el error Lock is requierid for this operation

oXbp := XbpPushButton():new( drawingArea, , {228,24}, {60,24},, } } )
oXbp:caption := "Bottom"
oXbp:tabStop := .T.
oXbp:create()
oXbp:activate := {|| Gather( aEditControls ), MAESCON->(DbGoBottom()),
Scatter(aEditControls) }

Gracias por ayudita
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por ANTONIO (37 intervenciones) el 23/04/2009 09:54:01
Hola:
Como la tienes en modo compartido es facil que para manipular registros tengas que bloquear antes y desbloquear despues.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por Ribo Salamanca (4 intervenciones) el 23/04/2009 15:12:24
Gracias Antonio, es correcto pero lo que no se es como hacerlo, si llamando un procedimiento o algo asi, es decir en donde bloqueo el registro. Me podrias dar una pista?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por ANTONIO (37 intervenciones) el 23/04/2009 19:13:14
DO BLOQUEO
replace x with y
UNLOCK

PROCEDURE BLOQUEO
private p_panta
store .f. to p_borra
if .not. rlock ()
store .t. to p_borra
save screen to p_panta
clear
restore screen from p_panta
if clipper
store setcolor () to colorp
endif
set color to n/w
?? chr (7)
?? space (27) + 'Registro bloqueado..' + space (32)
if clipper
set color to colorp
else
set color to
endif
endif
do while .not. rlock ()
enddo
if p_borra
restore screen from p_panta
endif
return
***********
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por Ribo Salamanca (4 intervenciones) el 23/04/2009 23:31:18
Gracias Antonio, estoy trabajando con eventos en XbpCrt o sea en modo hibrido y este codigo lo genera el diseñador de formularios

hice lo siguiente, llame el procedimiento ♥Bloqueo() desde el codigo de bloque
Aca una fraccion de codigo fuente

#include "Xbp.ch"
#include "Appevent.ch"
#include "Dbstruct.ch"

PROCEDURE Main
LOCAL nEvent:=0 , mp1, mp2, oXbp
SetColor("N/W")
CLS

USE MAECONTA SHARED ALIAS maescon

oXbp := XbpPushButton():new( drawingArea, , {228,24}, {60,24},, } } )
oXbp:caption := "Ultimo"
oXbp:tabStop := .T.
oXbp:create()
♥ oXbp:activate := {|| Bloqeo(), Gather( aEditControls ), MAESCON-> GoBottom
()), Scatter(aEditControls) }

oDlg:show()

nEvent := xbe_None
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
oDlg:destroy()

RETURN

PROCEDURE Bloqueo()
......
Return

Ahora tengo
Error :BASE/1026
Description: Parameter is missing
Operation::setdata

No entiendo es porque debo bloquear registro si estoy unicamamente saltando de comienzo a fin de la tabla. no deberia exigir bloqueo verdad?

Auxilio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por ANTONIO (37 intervenciones) el 25/04/2009 10:21:43
prueba a abrir los ficheros en forma exclusiva a ver si va.
use pepe.dbf exclusiv
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como trabajo PushButton() DbGoBottom y DbGoTop

Publicado por Ribo Salamanca (4 intervenciones) el 28/04/2009 22:00:29
Gracias antonio, definitivamente en este nivel de funcion de codigo es muy dispendioso,lo resolvi utilizando codigo pero orientado a objetos CLASS.
Generé nuevamente todo el código en Clase y trabaje los botoens con resultado estupendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar