Duvida xBaseJ duplica registro[RESOLVIDO]

11 respostas
J

Bom dia a todos,
Estou criando um arquivo DBF, executo o exemplo logo abaixo e o arquivo é criado, porem o registro inserido “teste” ele é duplicado e aparece uma seta na frente do registro duplicado.

try {

        DBF aDB = new DBF("C:/ARQ0612.dbf", true);
        CharField codigo = new CharField("codigo", 9);
        aDB.addField(codigo);
        codigo.put("teste");
        aDB.write();

    } catch (Exception e) {
        e.printStackTrace();
    }

preciso fazer mais alguma coisa?

11 Respostas

fantomas

Qual framework / API o senhor está utilizando?

flws

J

estou usando o “xBaseJ 2.2”, estou tentando criar um arquivo .DBF

E

Acho que você não está entendendo como usar a ferramenta que lê os bancos de dados.

Quando aparece a tal seta na frente do registro que você acha que está duplicado, na verdade a sua ferramenta está simplesmente preenchendo com um valor padrão um registro vazio (e é por isso que aparece a tal “setinha”) e que você pode preencher à mão com algum valor diferente, ou simplesmente não aceitar.

J

então eu acho q deve ser o ponteiro para o proximo registro, acho q n estou conseguindo finalizar a inserção, já utilizei tambem o JAVADBF para criar um arquivo dbf mas tive problemas com centavos, dai optei por este XBASEJ, por acaso vc conhece outra API para criar arquivo dbf?

fantomas

Olhei rapidamente e realmente isto ocorre (“duplicidade”).

Porem as funções da API são executadas como se elas não existissem, por exemplo o método getRecordCount() informa o número correto de registros no arquivo.

Enfim, acredito que seja o caso de perguntar para equipe que construiu o framework o por que disto.

flws

fantomas

Galera, pode ser um bug; vejam este link: http://sourceforge.net/tracker/index.php?func=detail&aid=3489548&group_id=213094&atid=1024340

Tem fazer o download da versão com a possível correção, caso seja um bug mesmo.

flws

fantomas

jpfurian350, testei desta maneira e funcionou:

DBF aDB = new DBF("C:/ARQ0612.dbf", DBF.DBASEIV, true);

A alteração foi a inclusão do parâmetro que indica o uso de uma estrutura de dados diferente da default (DBASEIII) : DBF.DBASEIV

flws

J

Realmente funciono não duplico mais o ultimo registro, agradeço a todos por terem me ajudado, porem voltei ao problema anterior q tive com o JAVADBF, quando eu passo o valor 32.33 para o arquivo o mesmo perde os centavos e fica 32,00 com duas casas decimais, alguem já passou por isso?

try {

        DBF aDB = new DBF("C:/teste.dbf", DBF.DBASEIV, true);

        NumField credits = new NumField("credits", 12, 2);

        aDB.addField(credits);

        credits.put(32.33);

        aDB.write();

    } catch (Exception e) {
        e.printStackTrace();
    }
fantomas

Entendi que isto está relacionado com o Locale.

Inclua esta linha no seu código no inicio que você irá perceber as alterações:

Locale.setDefault(Locale.ENGLISH);

flws

J

Deu certo, muito obrigado fantomas, já estava quase uma semana nisso, mas era mais simples do que imaginei, muito obrigado mesmo.

fantomas

É um prazer ajudar.

Na próxima vez que você precisar incluir código, por favor utilize a tag code.

Abraços

Criado 12 de julho de 2012
Ultima resposta 12 de jul. de 2012
Respostas 11
Participantes 3