Hi,
How can I check of a reckord is locked by an other user without locking it (so not use rlock())
I already tested it with DbRecordInfo(2), but this return .f. even when it's locked
Marc
FUNCTION RecLock(RLWijze,RLProc,RLLine,RLWaitSec,RLTaal,RLShow,RLAltijd,RLUser)
LOCAL lForever
LOCAL nWait
LOCAL lRedo := .T.
LOCAL nOrde := INDEXORD()
DEFAULT(RLWijze,1)
DEFAULT(RLWaitSec,0.1)
DEFAULT(RLTaal,"N")
DEFAULT(RLShow,.T.)
DEFAULT(RLAltijd,.F.)
IF RLWijze = 2
DEFAULT(RLUser,xLockUser)
ENDIF
SET ORDER TO 0
lForever=(RLWaitSec==0)
DO WHILE lRedo
nWait=RLWaitSec*2
DO WHILE lForever .OR. nWait>0
IF RLOCK()
IF !NETERR()
IF RLWijze = 1
SET ORDER TO nOrde
RETURN(.T.)
ELSE
IF RLAltijd .OR. EMPTY(&(ALIAS()+"->CTRAFK")) .OR. UPPER(ALLTRIM(&(ALIAS()+"->CTRAFK"))) = UPPER(ALLTRIM(RLUser))
&(ALIAS()+"->CTRAFK") := RLUser
&(ALIAS()+"->PRDURE") := RLProc
&(ALIAS()+"->PRLINE") := RLLine
IF xCommit
COMMIT
ELSE
UNLOCK
RLOCK()
ENDIF
SET ORDER TO nOrde
RETURN(.T.)
ENDIF
ENDIF
ENDIF
ENDIF
INKEY(.5)
nWait--
ENDDO
IF RLShow
lRedo := MsgYesNo("De gegevens welke U wenst aan te passen,"+CHR(13)+;
"zijn in gebruik met de volgende parameters :"+CHR(13)+;
CHR(13)+;
"Betreft de volgende gegevens :"+CHR(13)+;
CHR(13)+;
" - Bestand : "+ALIAS()+CHR(13)+;
" - Record nr. : "+ALLTRIM(STR(RECNO()))+CHR(13)+;
CHR(13)+;
"U wilt deze gegevens in gebruik nemen :"+CHR(13)+;
CHR(13)+;
IF(RLWijze=2," - Gebruiker : "+ALLTRIM(RLUser)+CHR(13),"")+;
" - Procedure : "+RLProc+CHR(13)+;
" - Lijn nr. : "+ALLTRIM(STR(RLLine))+CHR(13)+;
CHR(13)+;
"Deze gegevens worden gebruikt door :"+CHR(13)+;
CHR(13)+;
IF(EMPTY(&(ALIAS()+"->CTRAFK")),"- Softwarelock"," - Gebruiker : "+ALLTRIM(&(ALIAS()+"->CTRAFK"))+CHR(13)+;
IF(!EMPTY(&(ALIAS()+"->PRDURE"))," - Procedure : "+ALLTRIM(&(ALIAS()+"->PRDURE" ))+CHR(13),"")+;
IF(&(ALIAS()+"->PRLINE")<>0 ," - Lijn nr. : " +ALLTRIM(STR(&(ALIAS()+"->PRLINE")))+CHR(13),""))+;
CHR(13)+;
"Wenst U opnieuw te proberen ?",;
"Kies "+CHR(34)+"JA"+CHR(34)+" of "+CHR(34)+"NEE"+CHR(34))
ELSE
lRedo := .F.
ENDIF
IF !lRedo .AND. RLWijze = 2 ; UNLOCK ; ENDIF
ENDDO
SET ORDER TO nOrde
RETURN(.F.)
PROCEDURE RecUnLock(RLWijze,RLProc,RLLine,RLUser)
DEFAULT(RLWijze,1)
IF RlWijze = 2
DEFAULT(RLUser,xLockUser)
ENDIF
IF RLWijze = 1
IF xCommit ; COMMIT ; ENDIF
UNLOCK
ELSE
IF !EMPTY(&(ALIAS()+"->CTRAFK")) .AND. UPPER(ALLTRIM(&(ALIAS()+"->CTRAFK"))) = UPPER(ALLTRIM(RLUser))
IF RecLockJuda(1,PROCNAME(),PROCLINE(),2,TaalCode)
&(ALIAS()+"->CTRAFK") := SPACE( 3)
&(ALIAS()+"->PRDURE") := SPACE(20)
&(ALIAS()+"->PRLINE") := 0
ENDIF
IF xCommit ; COMMIT ; ENDIF
UNLOCK
ENDIF
ENDIF
RETURN
RecLock(2,PROCNAME(),PROCLINE(),5,TaalCode)
RecUnLock(2,PROCNAME(),PROCLINE())
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: Google [Bot] and 89 guests