Antonio please! problemas de bloqueo
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
Antonio please! problemas de bloqueo
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.
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.
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
!!!!!!
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!
Cada vez entiendo menos... Help!!!!
Saludos!
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Hola tecnisoftware
a mi me esta pasando lo mismo, pero al parecer es la funcion
neterr()
http://fivetechsoft.com/forums/viewtopic.php?t=7316
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
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
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
no es el caso...
A NetErr la llama para el caso de Append() y el problema lo tengo cuando quiero modificar.
Saludos!
Saludos!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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
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
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
Gracias Antonio
Gracias Antonio, ya descargué ese xHarbour, recompilo todo y me pongo a probar.
Con respecto a esto:
Gracias de todos modos.
Saludos!
Alejandro Cebolido.
Con respecto a esto:
No es correcto ya que si RLock() devuelve .F. la actualización no se realiza.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
Gracias de todos modos.
Saludos!
Alejandro Cebolido.
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
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
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
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
?
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.
Muchos saludos!
Alejandro Cebolido
Buenos Aires, Argentina.