Pessoal,
estive lendo outros topicos e ainda naum encontrei algo concreto que me dê uma idéia real...
nas vendas abro todos os arquivos necessários com seus respectivos indices, e se faz vendas de produtos e após + ou - 10 vendas corrompe os indices, e é necessário a reindexaçao...... faço desa forma:
Use &cCam1\BD_QTD
If Neterr()
Alert(" Arquivo sendo executado na Rede! ")
Close
Return .F.
Endif
ARQ=" CODQTD "
INDEX on CODIGO_QTD to &cCam2\CODQTD eval mostra(l,c,ARQ) every 6
ARQ=" LEIQTD "
INDEX on LEITOR_QTD to &cCam2\LEIQTD eval mostra(l,c,ARQ) every 6
o q vcs acham que devo fazer pra resolver isso? trocar de indices NTX, reindexar de outra forma.
abro os arquivos assim:
Select 4
Use &cCam1\Mov_Sai Index &cCam2\MovSPed,&cCam2\MovSDt,&cCam2\MovSNot Shared
agradeço dicas.....
"Corruption Detected"
Moderador: Moderadores
Olá Matrix,
Há muito tempo atrás, quando comecei a programar em ambiente multiusuário, tive problemas com "corruption detected" também. Após conhecer uma pequena técnica este problema diminuiu em mais de 95% para minhas aplicações.
Esta técnica é bem simples. Abras os arquivos normalmente com seu respectivos índices, porém, no momento em que fores executar o replace (inclusão/alteração) sete a ordem do índice para 0 (zero) e após o commit, retorne novamente a ordem para o índice original.
O índice permanece aberto, porém o Clipper somente ignora-o no momento do replace. Mesmo que algum campo que componha o índice seja modificado, o Clipper fará o update do índice normalmente.
Esta pequena forma de fazer o replace permite que os índices sejam atualizados mais rapidamente e com mais segurança por que ele é feito de uma vez só.
Experimente, não vai custar nada!
)
Um abraço,
Raul
Novo Hamburgo - RS
Há muito tempo atrás, quando comecei a programar em ambiente multiusuário, tive problemas com "corruption detected" também. Após conhecer uma pequena técnica este problema diminuiu em mais de 95% para minhas aplicações.
Esta técnica é bem simples. Abras os arquivos normalmente com seu respectivos índices, porém, no momento em que fores executar o replace (inclusão/alteração) sete a ordem do índice para 0 (zero) e após o commit, retorne novamente a ordem para o índice original.
O índice permanece aberto, porém o Clipper somente ignora-o no momento do replace. Mesmo que algum campo que componha o índice seja modificado, o Clipper fará o update do índice normalmente.
Esta pequena forma de fazer o replace permite que os índices sejam atualizados mais rapidamente e com mais segurança por que ele é feito de uma vez só.
Experimente, não vai custar nada!
Um abraço,
Raul
Novo Hamburgo - RS
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Desculpe meu caro, não entendi muito bem como vc faz para abrir os bancos e indices !
Tente fazer do modo "Arroz c/ Feijão" como segue :
SELE 1
USE BANCO1 SHARED
SET INDEX TO INDICE1, INDICE2, ....
SELE 2
USE BANCO2 SHARED
SET INDEX TO INDICE3, INDICE4 ....
Fica mais claro até para o Clipper, e tenho certeza que desta forma, vc não irá ter problemas.
Este erro que está gerando, é devido ao fato de algum indice não estar aberto no momento da atualização. Posteriormente na hora de emitir um Seek, como o tal indice não foi atualizado, acontece isso !
Tente fazer do modo "Arroz c/ Feijão" como segue :
SELE 1
USE BANCO1 SHARED
SET INDEX TO INDICE1, INDICE2, ....
SELE 2
USE BANCO2 SHARED
SET INDEX TO INDICE3, INDICE4 ....
Fica mais claro até para o Clipper, e tenho certeza que desta forma, vc não irá ter problemas.
Este erro que está gerando, é devido ao fato de algum indice não estar aberto no momento da atualização. Posteriormente na hora de emitir um Seek, como o tal indice não foi atualizado, acontece isso !
*abro os indices dessa forma:
Select 1
Use Bd_Cli Index CodCli,NomCli Shared
*Pra selecionr um indice pra busca por exemplo faço:
Select Bd_cli
Set Order to 1
Dbseek(nCodigo)
*Gravo
Replace CODIGO With nCodigo
Commit
*Pra criar os indices:
Use Bd_Cli
If Neterr()
Alert(" Arquivo sendo executado na Rede! ")
Close
Return .F.
Endif
ARQ=" CODCLI "
INDEX on CODIGO to CODCLI eval mostra(l,c,ARQ) every 6
ARQ=" NOMCLI "
INDEX on NOME to NOMCLI eval mostra(l,c,ARQ) every 6
Isso aí, o pessoal tá me passando que pode ser problema no HD da maquina, vamos verificar isso.
Select 1
Use Bd_Cli Index CodCli,NomCli Shared
*Pra selecionr um indice pra busca por exemplo faço:
Select Bd_cli
Set Order to 1
Dbseek(nCodigo)
*Gravo
Replace CODIGO With nCodigo
Commit
*Pra criar os indices:
Use Bd_Cli
If Neterr()
Alert(" Arquivo sendo executado na Rede! ")
Close
Return .F.
Endif
ARQ=" CODCLI "
INDEX on CODIGO to CODCLI eval mostra(l,c,ARQ) every 6
ARQ=" NOMCLI "
INDEX on NOME to NOMCLI eval mostra(l,c,ARQ) every 6
Isso aí, o pessoal tá me passando que pode ser problema no HD da maquina, vamos verificar isso.
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"

