Faltou dizer:
NUNCA USEI COMMIT, nem dbcommit(), apenas SKIP 0 antes do UNLOCK.
Não tive problema nem com Visual Basic 6 acessando simultâneo.
SIXCDX no Clipper 5.2, SIXCDX no inÃcio de uso do Harbour, DBFCDX depois.

Moderador: Moderadores
JoséQuintas escreveu:Faltou dizer:
NUNCA USEI COMMIT, nem dbcommit(), apenas SKIP 0 antes do UNLOCK.
Não tive problema nem com Visual Basic 6 acessando simultâneo.
SIXCDX no Clipper 5.2, SIXCDX no inÃcio de uso do Harbour, DBFCDX depois.
Fernando queiroz escreveu:Quintas como você faz a limpeza dos registros deletados no DBF?? ( ainda uso o pack)
Ranier escreveu:dbSkip(0)"A dbSkip( 0 ) will flush and refresh the internal database buffer and make any changes made to the record visible without moving the record pointer in either direction."
make any changes made to the record visible
dbCommit() causes all updates to the current work area to be written to disk. All updated database and index buffers are written to DOS and a DOS COMMIT request is issued for the database (.dbf) file and any index files associated with the work area.
JoséQuintas escreveu:TODOS concordam que o manual está errado, porque somente UNLOCK causa problemas.
Itamar M. Lins Jr. escreveu:Se não me falha a memória já li alhures o Przmek dizendo que skip(0) não faz o que o commit faz. Vou ver se acho isso.
FUNCTION RecUnlock()
SKIP 0
UNLOCK
RETURN NIL
#include "inkey.ch"
PROCEDURE Main
LOCAL mNome, GetList := {}, mSalva
SetMode(40,100)
CLS
IF ! File( "test.dbf" )
dbCreate( "test.dbf", { { "NOME", "C", 30, 0 } } )
ENDIF
USE test SHARED
IF Eof()
APPEND BLANK
REPLACE field->NOME WITH "1111111111"
APPEND BLANK
REPLACE field->NOME WITH "2222222222"
ENDIF
GOTO TOP
DO WHILE .T.
mNome := test->Nome
mSalva := " "
@ 2, 1 SAY "Nome:" GET mNome
@ 3, 1 GET mSalva PICTURE "!"
@ Row(), Col() + 2 SAY "(C=Commit, S=Skip 0, U=Unlock, N=Nenhum)"
READ
IF LastKey() == K_ESC
EXIT
ENDIF
IF mSalva $ "CSUN"
RLock()
REPLACE NOME WITH mNome
DO CASE
CASE mSalva == "C"; COMMIT; @ 5, 5 SAY "COMMIT"
CASE mSalva == "S"; SKIP 0; @ 5, 5 SAY "SKIP 0"
CASE mSalva == "U"; UNLOCK; @ 5, 5 SAY "UNLOCK"
OTHERWISE ; @ 5, 5 SAY " "
ENDCASE
ENDIF
SKIP 0
ENDDO
CLOSE DATABASES
RETURN
RLOCK()
SKIP 0
Usuários vendo este fórum: Nenhum usuário registrado online e 12 visitantes