Página 2 de 2

Enviado: 26 Mar 2005 14:11
por HASA
Não, é apenas um DBF de gravação, CAIXA.DBF, os demais são de apoio, Contas contabeis, etc... :-O

Enviado: 26 Mar 2005 14:44
por Dudu_XBase
Boa Tarde Senhores.
Já tive problemas com duplicidade.

Vou montar um exemplo de inclusão

Eu possuo um dbf denominado FUNC.DBF
nele contém os seguintes campos:
CODIGO - Caracter - 8
NOME - Caracter - 20

Nele tb possui dos indices.
FUN_COD - Ordenado pelo campo CODIGO
FUN_NOM - Ordenado pelo campo NOME

Quando vou cadastrar um novo funcionário.
O campo Codigo eu incremento +1 e mando ver.

tipo assim ->

// vou para o fim do dbf com o indice por CODIGO
func->(dbgobottom())

// incremento +1 no codigo
cCodigo := strzero(val(func->CODIGO)+1,8)

Mas se tiver mais de um cabra cadastrando ae dana tudo...
eu faço assim...

Código: Selecionar todos

  lOk := .t.
  while lOk
     
     // Incluo o Código    
     dbappend()
     replace func->CODIGO with cCodigo

     // Pego a posição do registro
      nrecno := recno()     
     
     // Verifico se tem duplicidade 
     if dbseek(cCodigo) .and. func->CODIGO =cCodigo .and. recno() != nRecno
        goto nRecno
        while !rlock()
        enddo
        dbdelete()
        dbcommit()
        dbunlock()
        func->(dbgobottom())       
       // Como já existe um cara cadastrado eu incremento +1
       cCodigo := strzero(val(func->CODIGO)+1,8)
     else  
       // Tudo blz 
        goto nRecno
        lOk := .f.
     endif
  enddo
  replace NOME with cNome
  dbcommit()
  dbunlock()   
  


Existem erros de duplicidade que podem ser ocasionados causa de indices corrompidos tb.

Enviado: 28 Mar 2005 09:12
por HASA
:D

Valeu DUDU, mas nesse caso em especial, os dados que são digitados na tela eu salvo e pronto, ou seja o usuário carrega uma seqüência de 1 a digamos 6 títulos no contas à pagar, gerando os registros físicos de 1 a 6 (por exemplo) em algum momento o Clipper (creio eu) appenda novamente na mesmo seqüência que foi digitado gerando assim a duplicidade, nesse caso gera + 6 "NOVOS REGISTROS" :(

Enviado: 29 Mar 2005 00:32
por Dudu_XBase
Vc ja tentou debugar o sistema durante essa inclusão ??