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{DBFaDB=newDBF("C:/ARQ0612.dbf", true); CharField codigo = new CharField("codigo", 9); aDB.addField(codigo); codigo.put("teste");aDB.write();}catch(Exceptione){e.printStackTrace();}
estou usando o “xBaseJ 2.2”, estou tentando criar um arquivo .DBF
E
entanglement
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
jpfurian350
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.
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:
DBFaDB=newDBF("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
jpfurian350
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{DBFaDB=newDBF("C:/teste.dbf", DBF.DBASEIV, true); NumField credits = new NumField("credits",12,2);aDB.addField(credits);credits.put(32.33);aDB.write();}catch(Exceptione){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
jpfurian350
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.