Possuo uma tabela em minha base de dados com um campo do tipo Numeric(16,13).
Na minha aplicação eu cheguei a realizar a inserção do seguinte valor: 0,00000121.
Salvou normalmente na base de dados e consigo enchergar este valor através de uma consulta SQL no IBExpert, por exemplo.
No entando, quando executo uma consulta SQL para retornar este valor num ClientDataSet da minha aplicação, a mesma me retorna a seguinte mensagem de erro:
"1,21E-6 is not a valid BCD value";
Eu realizei alguns testes e notei que esta "conversão" de valores ocorre a partir da 5ª casa decimal dos valores inseridos neste campo, ou seja, com o valor 0,0001 o erro não ocorre, já com o valor 0,00001 o erro passa a ocorrer pois este valor é convertido para "1E-5" e por algum motivo ele não é suportado no delphi.
OBS.: A mensagem de erro mensionada anteriormente só aparace quando habilito a opção de visualização de excessões do Delphi na parte de opções da aba Tools. Mesmo aparecendo a mensagem de erro, minha aplicação consegue trazer todos os registros que possuem valores maiores ou iguais a 0,0001.
Existe alguma maneira de retornar o valor que realmente está armazenado na base de dados, quero dizer, sem conversão?
Pergunta
K!ko
Boa tarde senhores.
Estou com o seguinte problema:
Estou trabalhando com Firebird 2.5 e Delphi 2006.
Possuo uma tabela em minha base de dados com um campo do tipo Numeric(16,13).
Na minha aplicação eu cheguei a realizar a inserção do seguinte valor: 0,00000121.
Salvou normalmente na base de dados e consigo enchergar este valor através de uma consulta SQL no IBExpert, por exemplo.
No entando, quando executo uma consulta SQL para retornar este valor num ClientDataSet da minha aplicação, a mesma me retorna a seguinte mensagem de erro:
"1,21E-6 is not a valid BCD value";
Eu realizei alguns testes e notei que esta "conversão" de valores ocorre a partir da 5ª casa decimal dos valores inseridos neste campo, ou seja, com o valor 0,0001 o erro não ocorre, já com o valor 0,00001 o erro passa a ocorrer pois este valor é convertido para "1E-5" e por algum motivo ele não é suportado no delphi.
OBS.: A mensagem de erro mensionada anteriormente só aparace quando habilito a opção de visualização de excessões do Delphi na parte de opções da aba Tools. Mesmo aparecendo a mensagem de erro, minha aplicação consegue trazer todos os registros que possuem valores maiores ou iguais a 0,0001.
Existe alguma maneira de retornar o valor que realmente está armazenado na base de dados, quero dizer, sem conversão?
Espero ter sido claro quanto ao meu problema.
Fico no aguardo de uma resposta.
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.