DUVIDA NO REPLACE PARA CASAS DE MILHARES

WEBIER 18/08/2010 17:25:00
#350614
tenho um campo numerico do tipo DUPLO, pois uso casa decimais

uso numero como 0,050 ou 0,550 ou 0,001 ou seja 3 casas decimais

para poder atualizar meu estoque fiz o seguinte código:
    For i = 1 To Grid.Rows - 1
execSQL [Ô]UPDATE PRODUTOS SET QUANT_ESTOQUE = QUANT_ESTOQUE - [Ô] & Replace(Grid.TextMatrix(i, 5), [Ô],[Ô], [Ô].[Ô]) & [Ô] WHERE CODIGO = [Ô] & Grid.TextMatrix(i, 2) & [Ô][Ô]
Next


esse código tira da minha quantidade no estoque a quantidade q está no grid... até ai tudo funcionando blz

agora meu cliente cliente começou a vender 1000, 2000... ou seja, vender milhares...

quando coloco para rodar esse código ele dar um erro, pois ele pensa que 2.000,000 (2 mil) é 2.000.000 (2 milhoes)

ou seja, ele troca a virgula por ponto e ai fica 2 milhoes...

como faço para resolver pois tenho q vender de 0,001 até 10.000,000 ?
MARCELO.TREZE 18/08/2010 17:45:04
#350619
o ideal seria vc primeiro excluir o ponto depois trocar a virgula por ponto assim

For i = 1 To Grid.Rows - 1
execSQL [Ô]UPDATE PRODUTOS SET QUANT_ESTOQUE = QUANT_ESTOQUE - [Ô] & Replace(Replace(Grid.TextMatrix(i, 5), [Ô].[Ô], [Ô][Ô]),[Ô],[Ô],[Ô].[Ô]) & [Ô] WHERE CODIGO = [Ô] & Grid.TextMatrix(i, 2) & [Ô][Ô]
Next


ou seja:

10.000,000 passa a ser 10000,000 depois 10000.000

veja se o código acima funciona

FUTURA 18/08/2010 18:10:18
#350624
Resposta escolhida
cara, usa replace() com cdbl() , uso sempre assim, nunca da problema, pois o cdbl [Ô]tira[Ô] o ponto do milhar.....

valor = [Ô] & replace(cdbl(variave),[Ô],[Ô],[Ô].[Ô]) & [Ô]

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