Casas Decimais no Firebird Linux
Já vasculhei a internet procurando uma solução, mas não encontrei, encontrei em diversos fóruns a problema mas não a resposta. A questão é a seguinte: Utilizo Kylix+DBExpress+Firebird, porém quando gravo algum valor com casas decimais (exemplo 10,13), as casas decimais não são gravadas no banco (é gravado somente 10). ALguém, por favor, sabe o que devo fazer?????
Abraço a todos
:D
Abraço a todos
:D
Elessandro Gobet
Curtidas 0
Respostas
Nandolh
04/08/2005
O campo no banco está como
DOUBLE PRECISION???
Ou vc está utilizando NUMERIC (lixo)
DOUBLE PRECISION???
Ou vc está utilizando NUMERIC (lixo)
GOSTEI 0
Afarias
04/08/2005
|Ou vc está utilizando NUMERIC (lixo)
eu gostaria de entender este comentário.
:roll:
T+
eu gostaria de entender este comentário.
:roll:
T+
GOSTEI 0
Jomba
04/08/2005
Já passei por este problema e depois de muita pesquisa na net consegui esta solução que repasso abaixo.
Crie um arquivo de script e execute a aplicação através deste script.
No meu caso dei ao arquivo o nome de ´script.sh´ e criei um link na desktop para este.
Conteúdo do ´script.sh´, o ´#´ no início da linha, indica linha comentada.
!/bin/bash
Pasta onde está o executável
app_install_dir=/projeto/bin
Caminho do executável = Pasta + nome do executável, neste caso ACADEMICO
app_path=$app_install_dir/ACADEMICO
if [ -n ´$LD_LIBRARY_PATH´ ]; then
export LD_LIBRARY_PATH=´$app_ld_path:$LD_LIBRARY_PATH´
else
export LD_LIBRARY_PATH=´$app_ld_path´
fi
if [ -z ´$LANG´ ]; then
export LANG=pt_BR.ISO-8859-1
fi
Aqui está o problema de não gravação de decimais, é preciso configurar o LC_ALL para este valor.
export LC_ALL=en_US;
#Executa sua aplicação.
$app_path $*
João Batista de Oliveira
jomba@cneconline.com.br
Colégio Cenecista Dr. José Ferreira
Uberaba - MG
Crie um arquivo de script e execute a aplicação através deste script.
No meu caso dei ao arquivo o nome de ´script.sh´ e criei um link na desktop para este.
Conteúdo do ´script.sh´, o ´#´ no início da linha, indica linha comentada.
!/bin/bash
Pasta onde está o executável
app_install_dir=/projeto/bin
Caminho do executável = Pasta + nome do executável, neste caso ACADEMICO
app_path=$app_install_dir/ACADEMICO
if [ -n ´$LD_LIBRARY_PATH´ ]; then
export LD_LIBRARY_PATH=´$app_ld_path:$LD_LIBRARY_PATH´
else
export LD_LIBRARY_PATH=´$app_ld_path´
fi
if [ -z ´$LANG´ ]; then
export LANG=pt_BR.ISO-8859-1
fi
Aqui está o problema de não gravação de decimais, é preciso configurar o LC_ALL para este valor.
export LC_ALL=en_US;
#Executa sua aplicação.
$app_path $*
João Batista de Oliveira
jomba@cneconline.com.br
Colégio Cenecista Dr. José Ferreira
Uberaba - MG
GOSTEI 0
Elessandro Gobet
04/08/2005
nandolh:
Uso NUMERIC, o qual não julgo um ´lixo´.
Jomba:
Já tentei alterar alguns parâmetros no arquivo i18n na pasta /etc/sysconfig, porém todos me trouxeram outros problemas. Vou experimentar sua sugestão de chamar o programa através de um executável.
vlw
Uso NUMERIC, o qual não julgo um ´lixo´.
Jomba:
Já tentei alterar alguns parâmetros no arquivo i18n na pasta /etc/sysconfig, porém todos me trouxeram outros problemas. Vou experimentar sua sugestão de chamar o programa através de um executável.
vlw
GOSTEI 0
Afarias
04/08/2005
|Uso NUMERIC, o qual não julgo um ´lixo´.
Com certeza não é Elessandro. NUMERIC nem é mesmo um tipo, é apenas uma ´alias´ -- é um grande recurso q permite o Ib/Fb escolher o melhor tipo interno para representar a informação desejada.
Nenhum dado no IB ou FB é guardado como NUMERIC, mas sim com o tipo mais eficiente que consiga representar os números desejados (baseado na precisão e escala definidos)
Geralmente o tipo escolhido é um INTEIRO visto sua precisão (isso mesmo, INTEIROS, mesmo q o número possua casas decimais) -- guardar informações em campos DOUBLE PRECISION é um ´último recurso´ devido sua imprecisão.
T+
Com certeza não é Elessandro. NUMERIC nem é mesmo um tipo, é apenas uma ´alias´ -- é um grande recurso q permite o Ib/Fb escolher o melhor tipo interno para representar a informação desejada.
Nenhum dado no IB ou FB é guardado como NUMERIC, mas sim com o tipo mais eficiente que consiga representar os números desejados (baseado na precisão e escala definidos)
Geralmente o tipo escolhido é um INTEIRO visto sua precisão (isso mesmo, INTEIROS, mesmo q o número possua casas decimais) -- guardar informações em campos DOUBLE PRECISION é um ´último recurso´ devido sua imprecisão.
T+
GOSTEI 0
Elessandro Gobet
04/08/2005
Tentei resolver a questão com o script, porém os caracteres especiais (acentuados ou ç) ficaram bagunçados. Pelo que entendi, o script faz com que a lingua padrão a ser utilizada pelo programa seja o inglês americando, porém no inglês não existem estes caracteres especiais o que resulta em um novo problema.
Alguém tem uma nova solução???
Alguém tem uma nova solução???
GOSTEI 0