Problema:Falha Catastrofica, campo TFMTBCD vs. ClientDataSet
Estou efetuando esta simples instrução:
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:
Select sum(Valor) from tabContas
where id_conta = 100
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
Curtidas 0
Respostas
Raserafim
29/07/2006
tenta nomear o campo na instrução SQL assim:
Select sum(Valor) as ValorSoma from tabContas where id_conta = 100
GOSTEI 0
Macario
29/07/2006
Ola.
No post foi apenas um exemplo.
a simples instrução é esta:
Na conexão do TSQLConnection, tentei passando Enable BCD, tanto como true como false, mas ocorre o mesmo.
grato.
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
Marco Salles
29/07/2006
Amigo , sem muita pretenção , mas so uma pergunta :
seu banco suporta esta Instrução..
Quando voce faz simplesmente a soma igual o raserafim postou , da tb este erro ????
Sum(isNull(MValor,0))
seu banco suporta esta Instrução..
Quando voce faz simplesmente a soma igual o raserafim postou , da tb este erro ????
GOSTEI 0
Macario
29/07/2006
Esqueci de mencionar, estou usando Delphi 6 com MSSQL 2000, driver da CoreLab.
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:
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
Macario
29/07/2006
Olá.
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.
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
Bon Jovi
29/07/2006
Tenta usando cast no resultado da soma:
Se não der certo, vê se com o driver da Borland funciona. Se ainda não, parte pra ADO, é mais recomendável.
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
Aroldo Zanela
29/07/2006
Colega,
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:
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
Macario
29/07/2006
O problema do inicio deste post foi solucionado (campos numeric),
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
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