Arquivo DBF ler field memo

Galera tenho um arquivo CLIENTES.DBF e preciso ler esse arquivo e mostrar numa tabela.
Estou usando o javaDBF que lê tranquilo, porém, o DBF tem os campos chamados memo, que eu acho que são indices para outros arquivos .DBF…
Quando eu chamo um arquivo:

InputStream inputStream = new FileInputStream( args[ 0]); DBFReader reader = new DBFReader( inputStream);

ele carrega o .DBF, mas ao encontrar um campo memo, ele da erro.

Alguém pode me ajudar a solucionar esse problema?

http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html

Ou seja: use outra biblioteca.

o problema que a única free que encontrei foi essa, o resto lê só até mil registros ou é só por 30 dias ;(

já tentou http://dans-dbf-lib.sourceforge.net/ essa?

será que é free? oO

Na home já falando isso ~> “[…] DANS is making this library available under the GNU Public Licence.”

se essa biblioteca tratar campos memos, vai salvar a minha pele! hahaha Vou verificar como funciona, depois dou um feedback aqui

Dá sim… da uma olhada na parte de uso e exemplos >> http://dans-dbf-lib.sourceforge.net/usage.html

ela é bem diferente do javaDBF, estou vendo os parâmetros, não é tão simples ler o arquivo ;x

dou por encerrada minha tentativa de ler campo memo de arquivo .dbf com java. :frowning:

Deu algum erro? qual?

no DANS DBF dispara um erro que não pode contar o numero de fields do arquivo .dbf
e no XBaseJ:

org.xBaseJ.xBaseJException: Wrong Version 48
at org.xBaseJ.DBF.openDBF(DBF.java:363)
at org.xBaseJ.DBF.(DBF.java:221)

algum problema de compatibilidade com o arquivo .DBF

e no javaDBF, não le o field memo

;~

posta seu código usando o DANS DBF…

é o exemplo do site:

[code]
package dans;

import java.io.File;
import java.io.IOException;
import nl.knaw.dans.common.dbflib.CorruptedTableException;
import nl.knaw.dans.common.dbflib.IfNonExistent;
import nl.knaw.dans.common.dbflib.Table;

/**
*

  • @author WinXP
    */
    public class Dans {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) throws IOException, CorruptedTableException {
      Table table = new Table(new File(“F:\CLIENTES.DBF”));

      try {
      table.open(IfNonExistent.ERROR);

       // ... do your stuff
      

      } finally {
      table.close(); // don’t forget to close it!
      }
      }
      }[/code]

erro:

run:
Exception in thread "main" nl.knaw.dans.common.dbflib.CorruptedTableException: Number of field descriptions in file could not be calculated.
	at nl.knaw.dans.common.dbflib.DbfHeader.getFieldCount(DbfHeader.java:181)
	at nl.knaw.dans.common.dbflib.DbfHeader.readAll(DbfHeader.java:131)
	at nl.knaw.dans.common.dbflib.Table.open(Table.java:275)
	at dans.Dans.main(Dans.java:27)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

na hora de abrir pelo table.open(IfNonExistent.ERROR); ele dispara o erro, o engraçado que pelo javaDBF abre normal, apenas não le quando chega no campo memo

O arquivo DBT tem que estar no mesmo diretório do DBF… caso não tenha abra o arquivo com o open office ou libre office faça uma alteração no conteúdo do arquivo em seguida desfaça a modificação e manda
salvar o arquivo que será gerado um arquivo DBT;;

graças ao jweibe meu problemas foram resolvidos, grande dbfman! aushasuasuh valew

OI Pessoal. Sei que o problema já foi resolvido mas fiz o mesmo aqui mas estou tendo um problema ao criar o objeto table. Diz que o contrutor está indefinido e eu não estou sabendo consertar. Sou muito iniciante em java mas estou precisando fazer conexão com o dbf. Segue abaixo o código.

[code]package comunicacao;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import nl.knaw.dans.common.dbflib.*;

import com.lowagie.text.Document;
import com.lowagie.text.Table;

import exception.XmlInvalidoException;

public class InserirDbf {

public void inserirDbf(Document xml)throws XmlInvalidoException,IOException, CorruptedTableException{
	Table table = new Table(new File("C:\\NOTA.DBF"));
	try
	 {
	     table.open(IfNonExistent.ERROR);

	     // ...  do your stuff
	     
	     
	 }
	 finally
	 {
	     table.close(); // don't forget to close it!
	 }
	
	return ;
}

}[/code]

o erro fica em

Table table = new Table(new File("C:\\NOTA.DBF"));  

esquece o return :lol:

Lucas tente algo como.

Table table = new Table(new File("./contato.dbf"), "UTF-8");
		
try {
	table.open(IfNonExistent.CREATE);
} catch (CorruptedTableException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
} finally {
	try {
		table.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
}