Página 1 de 1
Problemas com Arquivo DBT:
Enviado: 12 Fev 2006 10:02
por djjack
Bom dia amigos, estou com um problemão,
Tenho um arquivo de cadastro de clientes com um campo MEMO onde guardo as observações.
Acontece que ocorreu um problema que nunca havia visto antes, as observações do registro No. 1 encontram-se no registro No. 3 e assim sucessivamente.
Isso está me causando sérios transtornos, pois necessito destas observações para gerar corretamente os pedidos e NFs.
Já tentei gerar um arq. texto e modificá-lo, incluindo 2 registros em branco no inicio do arquivo e depois recuperá-lo em um DBF para utilizar o DBT, mas não deu certo, quando faço isto o campo MEMO fica zerado.
Se alguém puder me ajudar, desde já agradesço.
Enviado: 12 Fev 2006 20:34
por rochinha
Amiguinho
Quando um problema ocorre com um .DBF que contem arquivo .DBT é bom voce usar um programa de recuperação antes de fazer algo manualmente.
Um bom programa para este fim é o NORTON FILEFIX.
Mas para voce não perder tempo crie uma nova estrutura e transfira os dados registro a registro para o novo arquivo e rearranje os dados manualmente.
Se voce tem muitos problemas com arquivos MEMO passe a usar outros recursos como o de vincular dados externos aos registros, ou seja, voce tem uma imagem, que pode ser foto de cliente ou de produto ou um texto muito grande e deseja vincular ao registro, voce cria um registro para armazenar o caminho para encontrar o arquivo e abri-lo com um função ou rotina especial. Faça o mesmo.
Ou então crie um campo com o tamanho maximo permitido do Clipper, faça uso de funções existentes em algumas .LIBs como SIX para compressao de arquivos e strings e use o MEMOREAD para guardar o conteudo compactado dentro deste campo.
Exemplo didático:
cCampo1 := memoread( "arquivo.txt" )
cCampo2 := FuncaoQueComprime( cCampo1 )
rLock()
database->campo := cCampo2
dbCommitAll
O contrario seria assim:
cCampo1 := FuncaoQueDesComprime( database->campo )
cCampo2 := memowrit( "arquivo.txt" )
@bracos :?)
Enviado: 19 Fev 2006 23:50
por djjack
Valeu Rochinha pelas dicas,
até então não tinha tido nenhum problema com campos MEMO, mas vou tentar mudar a estrutura, conforme seu exemplo.
Agradesço pela força,
Djjack.
Enviado: 20 Fev 2006 08:40
por MARCELOG
Rochinha,
como cria um campo com o tamanho máximo permitido?
{Campo,C,?,?}
Obrigado.
MarceloG
Enviado: 21 Fev 2006 04:38
por rochinha
Amiguinho
Não me recordo bem em relação ao tamanho de campos numéricos, mas em relação a campos caracteres é 255 e para campos memo é 10, ou seja, o campo memo possui tamanho 10 pois neste camo será armazenado o numero identificador do registro vinculado no arquivo .DBT que pode ter 64kbytes de tamanho para cada registro.
Valeu?
@braços :?)
Enviado: 21 Fev 2006 08:45
por Grings
Posso estar enganado, mas tamanho máximo do campo caractere no DBF é de 1024. Vc pode editá-lo com memoedit().