Array
(
)

Decimal ou Float

Adsilver
   - 16 jan 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.

Bon Jovi
   - 16 jan 2005

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.

Adsilver
   - 16 jan 2005

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.

Bon Jovi
   - 16 jan 2005

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.

Adsilver
   - 17 jan 2005

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...

Bon Jovi
   - 18 jan 2005

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.