FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Antonio please! problemas de bloqueo
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
Antonio please! problemas de bloqueo
Posted: Tue Jun 26, 2007 06:10 PM
Antonio es urgentisimo que solucione este tema, se te ocurre que podrá ser????

Estoy usando xHarbour build 0.99.71 el que descargo habitualmente desde el cvs.

Estoy experimentando problemas de bloqueo en una red con XP SP2, lo extraño es que con esta función debería funcionar ok, devuelve .T. como que el registro fué bloqueado pero depues termina dando error dbfcdx/1022 "SE REQUIERE BLOQUEO", a alguien le ocurrió esto? revisé el foro pero no encontré información relevante acerca de este problema.

Antes que me preguntes, el problema ocurre en dos redes distintas con el mismo error asi que descarto problemas de placas, cables, etc. y obviamente cuando hago el REPLACE, viene un COMMIT - DBUNLOCK


La funcion de bloqueo es:

///////////////////////////////////////////////////////////////////////////////////

#Define MODE_FILE 1
#Define MODE_RECORD 2
#Define MODE_APPEND 3

Function Bloquea( cAlias, lAppend )
Local nMode
Local nCnt := 0

DEFAULT lAppend := .F.

DbSelectArea( cAlias )

If lAppend
nMode := MODE_APPEND
Else
nMode := MODE_RECORD
EndIf

Do While .T.

Do Case

Case nMode == MODE_APPEND
DbAppend()
If !NetErr()
Return .T.
Endif

Case nMode == MODE_RECORD
If RLock()
Return .T.
EndIf

EndCase

nCnt := nCnt + 1
SysWait(1)

If nCnt > 5
If !MsgYesNo( "No fué posible bloquear el registro " + StrZero( RecNo(), 8 ) + " del archivo " + cAlias + CRLF +;
"Reintenta?", "Atención!" )
Exit
Endif
Endif

EndDo

Return .F.

///////////////////////////////////////////////////////////////////////////////////


Necesito alguna ayudita urgente !!!!!!!!!!!!


Muchos saludos
Alejandro Cebolido, Buenos Aires, Argentina.
Alejandro Cebolido

Buenos Aires, Argentina
Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM
Antonio please! problemas de bloqueo
Posted: Tue Jun 26, 2007 06:30 PM

Este problema te pasa cuando quieres modificar un registro o cuando quieres adicionar? pareciera que esto pasa cuando quieres adicionar

Att.

Jaime

Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
!!!!!!
Posted: Tue Jun 26, 2007 06:36 PM

Me ocurre al querer modificar, inclusive usando la clase TDBF, me dice que el registro nnn está bloqueado cuando se perfectamente que nadie lo ha bloqueado por que tengo las dos pc una al lado de la otra....

Cada vez entiendo menos... Help!!!!

Saludos!

Alejandro Cebolido

Buenos Aires, Argentina
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Antonio please! problemas de bloqueo
Posted: Tue Jun 26, 2007 07:54 PM
Hola tecnisoftware

a mi me esta pasando lo mismo, pero al parecer es la funcion
neterr()

http://fivetechsoft.com/forums/viewtopic.php?t=7316
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
no es el caso...
Posted: Tue Jun 26, 2007 08:01 PM

A NetErr la llama para el caso de Append() y el problema lo tengo cuando quiero modificar.

Saludos!

Alejandro Cebolido

Buenos Aires, Argentina
Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM
Antonio please! problemas de bloqueo
Posted: Tue Jun 26, 2007 09:37 PM

porque no haces algo simple en vez de llamar a la funcion BLOQUEA

usa de frente RLOCK()

RLOCK()
Replace campo with dato etc, etc, etc

UNLOCK

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Antonio please! problemas de bloqueo
Posted: Tue Jun 26, 2007 11:14 PM

Te sugiero dos ideas:

Descarga el build de xHarbour desde www.fivetechsoft.com/files/xharbour.exe y prueba con él

De continuar el error, construye un ejemplo en modo consola, sin FWH, y repórtalo en comp.lang.xharbour accesible desde google grupos

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
Gracias Antonio
Posted: Wed Jun 27, 2007 12:41 PM
Gracias Antonio, ya descargué ese xHarbour, recompilo todo y me pongo a probar.

Con respecto a esto:

jacgsoft wrote:porque no haces algo simple en vez de llamar a la funcion BLOQUEA

usa de frente RLOCK()

RLOCK()
Replace campo with dato etc, etc, etc

UNLOCK


No es correcto ya que si RLock() devuelve .F. la actualización no se realiza.

Gracias de todos modos.

Saludos!
Alejandro Cebolido.
Alejandro Cebolido

Buenos Aires, Argentina
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Antonio please! problemas de bloqueo
Posted: Wed Jun 27, 2007 01:21 PM
para bloquear registro yo utilizo

	if dbRLock( )
		lRet := .T.
	 	exit
	endif


    DBRLOCK()
    Bloquea el registro que coincide con la identidad especificada o con
    la actual

    Sintaxis

    DBRLOCK(<xIdentidad>) --> lExito

    Argumentos

    <xIdentidad> es un valor £nico en la estructura del fichero de
    datos que identifica de forma un¡voca a uno de sus elementos (de base
    de datos). En ficheros con estructura de datos .dbf, <xIdentidad> es
    el n£mero de registro. En otros formatos de datos, <xIdentidad> es el
    valor de la clave principal.

    Devuelve

    DBRLOCK() devuelve un valor l¢gico que es verdadero (.T.) si no hay
    error en el bloqueo y falso (.F.) en caso contrario.
    [/list:u]
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
?
Posted: Wed Jun 27, 2007 02:50 PM

Que diferencia existe entre RLock() y DBRlock() y/o en el caso que funcionen distinto, cual es mas conveniente de usar ??

Muchos saludos!
Alejandro Cebolido
Buenos Aires, Argentina.

Alejandro Cebolido

Buenos Aires, Argentina

Continue the discussion