Decimal ou Float

16/01/2005

Olá pessoal,

Queria saber que tipo de campo no SQLServer vcs usam pra criar campos com valores reais. Float ou Decimal(n, m)?

Sempre utilizei float, mas o SQLServer armazena com muuuuuitas casas decimais gerando pequenos erros no delphi, pois utilizo somente duas casas decimais.

Migrei todos os meus campos float para Decimal(9,2) e até agora o resultado está ótimo. Queria saber se tem algum problema em utilizar campos do tipo Decimal no Delphi??

Abraço,
Adriano Silveira.


Adsilver

Respostas

16/01/2005

Bon Jovi

Pelo contrário, terá problema se usar float nesse caso, como vc mesmo já viu. A única diferença no Delphi é q os TFields serão do tipo BCD.


Responder Citar

16/01/2005

Adsilver

Entao devo usar decimal, certo?

Foi isso que fiz... troquei todos os campos no servidor de float pra decimal(9,2).

Um detalhe é que meus fields no delphi continuam sendo TFloatField. Já os removi e adicionei, e continuam como TFloatField. Esse comportamento está correto?

Abraço e valeu Bon Jovi.


Responder Citar

16/01/2005

Bon Jovi

Sim, qdo vc precisa definir a precisão, o Decimal ou Numeric é o tipo mais indicado pro caso.

Sobre os TFields do Delphi, depende do driver de acesso. Qual pacote de componentes está usando? No caso do ADO (com driver OLE DB for SQLServer) ele deveria vir como TBCDField. A propriedade EnableBCD deve estar setado pra True nos DataSets, q já é default, mas certifique.


Responder Citar

17/01/2005

Adsilver

To usando com o velho BDE mesmo. Deve ser por isso q vem como FloatField. Para SQLServer, qual é mais recomendável para eu migrar, DBX ou ADO? E Interbase?


Valeu cara...


Responder Citar

18/01/2005

Bon Jovi

Pra SQLServer o ADO (via OLE DB) é o mais apropriado, e vc encontrará uma quantidade bem maior de conteúdo na Internet sobre ADO com SQLServer. Em pequenos testes achei o dbExpress (q tb usa OLE DB) um pouco mais rápido em algumas situações, mas mesmo assim ainda prefiro o ADO por ser do proprio fabricando do SQLServer.

Sobre BDE, a última vez q usei foi em 2001, e se não me falhe a memória vc pode habilitar o BCD na configuração do BDE Administrator. Vi aqui agora, vai no driver MSSQL e procura por Enable BCD.

Já pra Interbase sem dúvida o dbExpress é mais indicado.


Responder Citar