Jump to content
Fivewin Brasil

Corruption Detected


ablemos

Recommended Posts

Estou tendo um problema frequente. Uso cdx e tenho no meu dbf um indice com data + nro.pedido. Quando eu altero um pedido com data de outro dia, o arquivo corrompe (DOS ERROR 5).

Alguém já passou por este problema ???

Alessandro B. Lemos

ablemos@ig.com.br

Sorocaba/SP

Link to comment
Share on other sites

Qual a versao do seu Clipper e como esta a chave do indice?

citação:

Estou tendo um problema frequente. Uso cdx e tenho no meu dbf um indice com data + nro.pedido. Quando eu altero um pedido com data de outro dia, o arquivo corrompe (DOS ERROR 5).

Alguém já passou por este problema ???

Alessandro B. Lemos

ablemos@ig.com.br

Sorocaba/SP


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@hotmail.com

Link to comment
Share on other sites

Vagner meu amigo, devo discordar de voce nesta questao...

eu faço alterações nas minhas tabelas, inclusive nos campos que fazem parte da chave de indices e nao tenho problema de corrupção de indice... :) eu utilizo um macete que um grande amigo e programador me ensinou na epoca do dbase..(heheheehe .. alguem lembra?)!! Basta desabilitar os indices antes de fazer as alteracoes... veja bem.. só desabilitar nao fechar.... ok

dbSelectArea('XYZ')

nOrder := IndexOrd()

dbSetOrder(0)

// faz as alteracoes

dbsetOrder(nOrder)

...... continua ....

citação:

Olá Alessandro,

Por um acaso, você grava novamente a chave ?, se for fazer uma alteração, não regrave a chave, senão ele estoura mesmo icon_smile.gif

Abraços

Vagner Wirts

São Paulo-Brasil


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@hotmail.com

Link to comment
Share on other sites

(heheheh), Olá Marllon, quanto tempo icon_smile_big.gif

Realmente concordo com vc se vc desabilitar ou mudar o indice, tipo vc têm dois tags ou dois arquivos, mande selecionar para o outro índice, aí passa beleza, mas se está com o índice aberto, irá dar pau 99% de chance icon_smile_big.gif

Abraços

Vagner Wirts

São Paulo-Brasil

Link to comment
Share on other sites

Vixe Maria... Uma 'briga' entre usuários de @Say... Nós do WorkShop.exe the best mandamos abraços. hehehehehe. Será ke o 'bicho' vai pegar? Me chama ke eu vou!

CRIAÇAO DE INDICES CDX

Em principio existem 3 Funções para construir Indices:

OrdConSet(), OrdCriate() e DbCriateIndex(), Porem nao se recomenda Trabalhar

directamente com elas.

Pelo contrario, Usaremos INDEX ON ( que no fundo se transforma em Funções por

Meio do pre-processador - /P ) por sua claridade e flexibilidade.

Analizemos Abaixo:

INDEX ON ;

TAG TO ;

FOR ;

WHILE ;

NEXT | RECORD | REST | ALL ;

UNIQUE ;

ASCENDING | DESCENDING ;

EVAL EVERY ;

USECURRENT ;

ADDITIVE ;

CUSTOM ;

NOOPTIMIZE

Então:

Se você fizer assim no Clipper 5.3B, provavelmente, dê certo!

INDEX ON Field->MATRICULA+Field->MESANO TAG MATRICULA+MESANO TO PROVIS ;

EVAL ( oMeter1:Set( RecNo() ), SysRefresh() )

Maiores detalhes em DICAS + dicas... Programa Para Iniciantes em Portugues: REINDEXA.PRG

Abraços. Dá-lhe Clipper 5.3B e WorkShop.exe the best! Brincadeirinha....

João Santos

São Paulo-Brasil

(11) 3106-2832 a Noite

karinhannah@ubbi.com.br

Link to comment
Share on other sites

O Vagnao tem Razão se vc fizer a procura com o indice que vai atualizar com certeza vai dar pau , mas isso so ocorre em redes do windows , no linux e na novell provalvelmente nao ocorre e porque na rede do windows ao fazer uma leitura ele trava o ponteiro do indice de registro por um determinado tempo ou ate que vc faça nova leitura. isso ocorre porque o tempo percorrido entre a leitura e atualizacao do indice esta sendo menor que o FLUSH do servidor Windows.

Mauricio Jordao

Link to comment
Share on other sites

Marllon, eu uso assim:

index on dtos(dtalav_g)+nrolav_g tag venin1 to vendas // p/ criar o índice

use vendas alias vendas shared new via "DBFCDX"

sele vendas

go nroreg_t // vou p/ o registro selecionado de outra data

trareg(0) // função p/ "travar" o registro

repl nrolav_g with nrolav_t,dtalav_g with dtalav_t // p/ data atual

unlock

Alessandro B. Lemos

ablemos@ig.com.br

Sorocaba/SP

Link to comment
Share on other sites

Olá Alessandro.

Eu uso uma função pra travar o registro assim e não tenho problemas, ve se resolve pra vc.

...

...

IF grava

while !RecLock(10) ; END

Cli->cod:=vcod

...

...

Cli->(dbUnLock() ; refresh()

END

FUNCTION RecLock(nSegundos)

LOCAL nSempre

IF dbRlock() // Se Travar o Registro

Return(.T.) // Retorne Travado

END

nSempre:=(nSegundos=0)

while (nSempre .OR. nSegundos>0) .AND. InKey()#27

IF dbRlock()

RETURN(.T.) // Retorna Travado

END

inKey(.5) // Aguarda 1/2 Segundo

nSegundos-=.5 // Diminui 1/2 Segundo na variavel Segundos

END

RETURN(.F.) // Retorne nao Travado

Beto.

betovsp@hotmail.com

Link to comment
Share on other sites

Beto, uso um rotina bem parecida com esta. Mas dá erro do mesmo jeito.

Não tenho certeza, mas acho que é quando eu altero um registro chave.

Alessandro B. Lemos

ablemos@ig.com.br

Sorocaba/SP

Editado por - ablemos on 01/06/2004 17:00:44

Link to comment
Share on other sites

Experimenta fazer assim....

sele vendas

dbsetorder(0)

go nroreg_t // vou p/ o registro selecionado de outra data

trareg(0) // função p/ "travar" o registro

repl nrolav_g with nrolav_t,dtalav_g with dtalav_t // p/ data atual

unlock

dbsetorder(1)

veja se isto resolve a corrupcao de indices!!!

citação:

Marllon, eu uso assim:

index on dtos(dtalav_g)+nrolav_g tag venin1 to vendas // p/ criar o índice

use vendas alias vendas shared new via "DBFCDX"

sele vendas

go nroreg_t // vou p/ o registro selecionado de outra data

trareg(0) // função p/ "travar" o registro

repl nrolav_g with nrolav_t,dtalav_g with dtalav_t // p/ data atual

unlock

Alessandro B. Lemos

ablemos@ig.com.br

Sorocaba/SP


id=quote>id=quote>

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

marllonfigueiredo@hotmail.com

Link to comment
Share on other sites

Bom dia a todos,

Eu utilizo no meu sistema em ms-dos (ainda),(clipper 5.2e)

as seguintes linhas junto ao blinker (.lnk)

@cl520max

@ntx520

lib \cli53dos\lib\DBFNTX

lib \cli53dos\lib\EXTEND

@cdx520

file \cli53dos\obj\cdxlock

lib \cli53dos\lib\DBFCDX # 1° <-Tem que ser nesta ordem

lib \cli53dos\lib\_DBFCDX # 2°

ou seja uso o clipper 5.2e + as libs do clipper 5.3b, embora eu utilize o .ntx ainda, eu acho que irá funcionar tambem com .cdx.

Abraços,

Rossine.

Obs: Aprendi este esquema aqui neste forum com os grandes mestres.

Link to comment
Share on other sites

ou seja uso o clipper 5.2e + as libs do clipper 5.3b, embora eu utilize o .ntx ainda, eu acho que irá funcionar tambem com .cdx.

Rossine... Se usas as LIBS do Clipper 5.3b the best, não é mais 5.2E ( E = eca! ) abraços só para descontrair. hehehe

João Santos

São Paulo-Brasil

(11) 3106-2832 a Noite

karinhannah@ubbi.com.br

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...