VALOR DECIMAL VISUAL BASIC BD - FIREBIRD
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
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
Olha usa a seguinte linha:
CAMPODATABELA = Replace(CCur(TXTVALOR.Text), [Ô],[Ô], [Ô].[Ô])
Essa linha atribui o valor trocando a VÃRGULA pelo PONTO dá certinho
CAMPODATABELA = Replace(CCur(TXTVALOR.Text), [Ô],[Ô], [Ô].[Ô])
Essa linha atribui o valor trocando a VÃRGULA pelo PONTO dá certinho
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.
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.
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.
Creio que a ajuda do amigo TRSOFTWARES, possa dar certo pois tanto os Campos ValorUnitario e Quantidade são do tipo Double
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)) & [Ô][ô][Ô]
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