Fórum Problema:Falha Catastrofica, campo TFMTBCD vs. ClientDataSet #326445
29/07/2006
0
O campo na tabela esta como numeric(12,2), quando incluo o field sem efetuar a soma ele aparece como [b:a31b6f25fe]TCBDField[/b:a31b6f25fe], agora quando incluo vindo da intrução de soma aparece como [b:a31b6f25fe]TFMTBCDField[/b:a31b6f25fe].
Alguem sabe me dizer o que ocorre?
Seria estouro da capacidade? Se bem que a soma nao ultrapassa 15.000,00.
Esta tabela foi migrada de uma base dbase, onde o campo era N(14,2).
Grato.
:roll:
Macario
Curtir tópico
+ 0Posts
29/07/2006
Raserafim
Select sum(Valor) as ValorSoma from tabContas where id_conta = 100
Gostei + 0
29/07/2006
Macario
No post foi apenas um exemplo.
a simples instrução é esta:
select sum(isNull(MValor,0)+isNull(Desconto,0)) as Valorbaixa from Contas where ID_Conta = 100
Na conexão do TSQLConnection, tentei passando Enable BCD, tanto como true como false, mas ocorre o mesmo.
grato.
Gostei + 0
29/07/2006
Marco Salles
seu banco suporta esta Instrução..
Quando voce faz simplesmente a soma igual o raserafim postou , da tb este erro ????
Gostei + 0
29/07/2006
Macario
Sim numa simples instrução, como a que postei (sem indicar um alias ao campo), ou a que o colega raserafim postou, ocorre o erro.
Lembrando que so ocorre quando utilizo agregação.
:arrow:
Gostei + 0
29/07/2006
Macario
O problema foi solucionado.
Eu estava usando:
SQLConnection+SQLDataSet+DataSetProvider+ClientDataSet+DataSource
Pelo que pesquisei, alguem pode me corrigir, nativamente o dbExpress não suporta campos numericos com mais de 15 digitos.
Estou usando o driver da CoreLab (www.crlab.com) versao 2.50.6, quando instalado este driver adiciona na paleta dbexpress um componente TCRSQLConnection, no qual eu deveria estar usando, e nao apenas a ddl.
Agora estou usando este componente e tenho acesso a campos numeric ou decimal normalmente.
Grato pela atenção de todos.
Gostei + 0
30/07/2006
Bon Jovi
select cast(sum(isNull(MValor,0)+isNull(Desconto,0)) as numeric(15,2)) as Valorbaixa from Contas where ID_Conta = 100
Se não der certo, vê se com o driver da Borland funciona. Se ainda não, parte pra ADO, é mais recomendável.
Gostei + 0
30/07/2006
Aroldo Zanela
Com firebird/ibx já tive o mesmo problema e resolvi com Cast, mas como você está usando SQL Server, acho que o mais apropriado seria:
select Convert( Numeric(15,2), sum(isNull(MValor,0)+isNull(Desconto,0))) as Valorbaixa from Contas where ID_Conta = 100
Gostei + 0
31/08/2006
Macario
mas ja o da agregação não consegui.
Com a conversão do tipo (sobre o proprio tipo) funciona, mas gostaria de achar a forma [b:fda0a7d993]correta[/b:fda0a7d993] de [b:fda0a7d993]sanar[/b:fda0a7d993] este problema. Creio que seje algum bug: ou do [b:fda0a7d993]dbexpress[/b:fda0a7d993] ou do driver da [b:fda0a7d993]CoreLab[/b:fda0a7d993].
Info: Delphi 6, MSSQL 2000 e driver CoreLab 2.50.05
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)