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.
Problemas com Arquivo DBT:
Moderador: Moderadores
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
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 :?)
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 :?)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
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 :?)
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 :?)


