Problemas com DBExpress

Delphi

17/10/2005

Bom, meus problemas estão sendo os seguinte:

Primeiro e Mais grave deles - Em uma tabela de meu banco de dados (e em apenas uma tabela), quando executo a operação Select * From Tabela, me é retornado um erro( Operation Not Applicable ). O estranho é que é só com essa tabela.

Segundo Problema - Em algumas tabelas com campos tipo Numeric(15,4) se tiver com valores, por exemplo assim 178, 160, 125,aperecem multiplicados por mil. Aparecem assim: 178000, 160000, 125000.

Alguém poderia me ajudar??

Detalhes: Uso Delphi 7 Enterprise, Banco de Dados DB2 8.2, Driver DBExpress nativo do delphi. Os erros persistem (usando senha de admistrador/dono do banco e com administrador da estação. também testei com usuário comum, mas dá o mesmo erro).


Firekiller

Firekiller

Curtidas 0

Respostas

Ricna

Ricna

17/10/2005

Não creio que o problema seja no dbexpress, provavelmente é no seu banco de dados mesmo.


GOSTEI 0
Firekiller

Firekiller

17/10/2005

Colega, o problema não é com o meu banco, pois através do Java funciona blz. Testei com ADO e funciona blz... mas não funciona com o DBExpress. Porém não posso alterar para ADO, pois o projeto já está todo desenvolvido em DBExpress, e o problema é só com essa Tabela.


GOSTEI 0
Jcalmeij

Jcalmeij

17/10/2005

Esta tabela é uma ´tabela´ propriamente dita ou uma view???
Não setaste os esquemas de acesso a metadados...
schematype para ´filtrar´ por tables???


GOSTEI 0
Firekiller

Firekiller

17/10/2005

É uma tabela física mesmo. Só não entendi porque ele tá multiplicando o valor desse campo por mil.
PS: Com ADO os valores são retornados blz.


GOSTEI 0
Rhosaka

Rhosaka

17/10/2005

O erro ´ Operation not aplicable ´ ocorre por causa do componente ClientDataSet por incompatibilidade de dados entre o delphi e o banco de dados.. mais comum com campos do tipo data, você tem duas maneira de resolver este problema uma seria registrar uma versão mais nova da dll midas.dll na maquina onde ocorre o erro através do comando regsrv32 caminho da dll, ou então incorporar a dll no seu projeto através da declaração ´MidasLib´ em seu datamodule.

ja o segundo problema verifique o tipo de dado que o dbexpress esta utilizando para fazer o mapeamento no delphi.. ás vezes ele pode estar utilizando um tipo que não seria o mais correto..


GOSTEI 0
Bugaloobr

Bugaloobr

17/10/2005

Na questao:
Segundo Problema - Em algumas tabelas com campos tipo Numeric(15,4) se tiver com valores, por exemplo assim 178, 160, 125,aperecem multiplicados por mil. Aparecem assim: 178000, 160000, 125000.

Me parece normal, jah q o seu numero possui no maximo 14 posicoes, sendo 4 de uma ´mantissa´ decimal. Assim, um numero inteiro eh ele mais a mantissa decimal 0000 (x,4). Se nao me engano, apenas quanto o banco dah suporte a tipos numericos flutuantes, eles sao armazenados com sua porcao decimal por inteiro. Espero ter ajudado


GOSTEI 0
Firekiller

Firekiller

17/10/2005

colega Rhosaka,
Peguei a última versão do Midas, disponivel no site www.distribucon.com e registrei a mesma, porém foi em vão. Tentei utilizar a unit MidasLib, mas nada também. Mas fico muito grato pela ajuda que vocês estão me dando.

Colega BugalooBr
Meu banco de dados é DB2 V. 8.2, ele possui suporte a ponto flutuante. Tanto é que, os valores retornados para essa coluna, quando uso ADO (OleDB ou mesmo ODBC) traz os valores normalmente.

Bom, vou ter que deixar meio que na ´gambiarra´ mesmo (pelo menos por enquanto). Vou deixar, apenas para essa tabela, usando ADO, as outras deixo com DBExpress (Não gosto muito disso mas se é o jeito, fazer o que né?!)

Fico muito grato a todos. Muito obrigado mesmo!


GOSTEI 0
POSTAR