VALOR DECIMAL VISUAL BASIC BD - FIREBIRD

DINHORSO 21/02/2010 13:12:20
#334955
Sempre utilizei esta rotina com Bd Acess e dava certo depois que mudei pra o Firebird fica dando erro, gostaria que alguem me ajudasse

tbVenda.Open [Ô]Insert Into ItemPedidos(CodigoPedido, CodProduto, PrecoVenda, Desconto, Quantidade)[Ô] & _
[Ô]Values([ô][Ô] & CodigoPedido & [Ô][ô], [ô][Ô] & intCodigoProduto & [Ô] [ô], [ô][Ô] & _
ccur(ValorUnitario) & [Ô][ô], [ô][Ô] & CCur(txtDesconto.Text) & [Ô][ô], [ô][Ô] & cdbl(Quantidade) & [Ô][ô])[Ô], BaseDados

Os erros são acusado nos campos ValorUnitario e Quantidade, já tentei tambem usando a funçao Format, li em alguns topicos que é a questão da virgula que o Firebird so reconhece o ponto, mais estou sem ideias pra solucionar o problema
TRTNCG 21/02/2010 13:27:59
#334958
Olha usa a seguinte linha:

CAMPODATABELA = Replace(CCur(TXTVALOR.Text), [Ô],[Ô], [Ô].[Ô])

Essa linha atribui o valor trocando a VÍRGULA pelo PONTO dá certinho
RICART 21/02/2010 13:49:07
#334961
Há duas situações:

1a. Precisa ver como está o data type no campo da tabela

2a. Vc precisa passar no formato 0.0000 (dependendo da quantidade de casas decimais que vc vai passar), tendo o cuidado de retirar a vírgula e deixar o pondo como separador dos decimais.

Vamos supor que na tabela esteja como numeric(9,2) e vc está enviando um número com mais de 2 casas decimais. Dará erro.

A quantidade de decimais do seu campo tem que está prevendo o limite máximo de decimais que terá nas suas operacoes. Utilizo esse data type pois tem me garantido maior exatidão nos cálculos, não sei se é o seu caso.

EDERMIR 21/02/2010 23:11:47
#334989
Citação:

:
Olha usa a seguinte linha:

CAMPODATABELA = Replace(CCur(TXTVALOR.Text), [Ô],[Ô], [Ô].[Ô])

Essa linha atribui o valor trocando a VÍRGULA pelo PONTO dá certinho



Tanto o FIREBASE quanto o ACCESS devem retornar erro ao utilizar VIRGULA decimal. A virgula é usada como SEPARADOR.

Verifique a solução acima.
DINHORSO 22/02/2010 11:15:21
#335016
Creio que a ajuda do amigo TRSOFTWARES, possa dar certo pois tanto os Campos ValorUnitario e Quantidade são do tipo Double
ARNALDOCRUZ 22/02/2010 12:09:01
#335022
Resposta escolhida
EM Select

Campo Numerico...... Campo=Cast([ô][Ô] & campo & [Ô][ô] & As Numeric)
Campo Data ........Campo=Cast([ô][Ô] & Format(campo,[Ô]mm/dd/yyyy) & [Ô][ô] As Date)
Campo Valor .........Campo=[ô][Ô] & Str(ccur(campo)) & [Ô][ô][Ô]

Para gravar

Campo Numerico...... Campo=[ô][Ô] & campo & [Ô][ô]
Campo Data ........Campo=[ô][Ô] & Format(campo,[Ô]mm/dd/yyyy) & [Ô][ô]
Campo Valor .........Campo=[ô][Ô] & Str(ccur(campo)) & [Ô][ô][Ô]

Tópico encerrado , respostas não são mais permitidas