Antonio please! problemas de bloqueo

Post Reply
User avatar
TecniSoftware
Posts: 213
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina

Antonio please! problemas de bloqueo

Post by TecniSoftware »

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.
User avatar
jacgsoft
Posts: 96
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Post by jacgsoft »

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

Att.


Jaime
User avatar
TecniSoftware
Posts: 213
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina

!!!!!!

Post by TecniSoftware »

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!
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post by Patricio Avalos Aguirre »

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
User avatar
TecniSoftware
Posts: 213
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina

no es el caso...

Post by TecniSoftware »

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

Saludos!
User avatar
jacgsoft
Posts: 96
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Post by jacgsoft »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
User avatar
TecniSoftware
Posts: 213
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina

Gracias Antonio

Post by TecniSoftware »

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.
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post by Patricio Avalos Aguirre »

para bloquear registro yo utilizo

Code: Select all

	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.
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
User avatar
TecniSoftware
Posts: 213
Joined: Fri Oct 28, 2005 6:29 pm
Location: Quilmes, Buenos Aires, Argentina

?

Post by TecniSoftware »

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.
Post Reply