CONVERSAO DE DADOS - PONTO DECIMAL

M.SOTTI 03/10/2006 10:40:12
#175230
Pessoal, bom dia!

Estou com um problema...
Tenho uma procedure no SQL Server, usada para inserir dados. Porém estou com problema para executar essa procedure pelo VB, o erro acontece nos campos numericos com casa decimal.

O SQL só aceita separação por ponto e no VB por vírgula, já tentei usar replace e mesmo assim da erro (inclusive o replace elimina a casa decimal deixando o número inteiro).

Se alguém tiver uma dica....



Muito obrigado


Miguel Sotti
USUARIO.EXCLUIDOS 03/10/2006 10:45:32
#175233
Amigo vc ja verificou as configuracoes do seu micro ?

Verificar no painel de controle em opcoes/configuracoes regionais se o separador esta como , ou .
M.SOTTI 03/10/2006 11:25:10
#175237
A configuração está como separador por virgula. Mas a questão é: eu não posso mudar essa configuração, a empresa toda usa dessa forma.


USUARIO.EXCLUIDOS 03/10/2006 11:36:16
#175241
amigo,

eu tenho o mesmo problema e tive que fazer o seguinte:

quanto vou setar os campos mando para uma rotina onde
mudo a atribuição da configuração regional (decimal = ponto),
gravo e volto a config. normal (decimal=virgula).

é ridiculo mas resolve"

Ok?
USUARIO.EXCLUIDOS 03/10/2006 12:03:55
#175258
ਠamigo como vc nao consegue mudar as configuracoes do micro vc devera realmente salvar em uma rotina a configuracao muda-la salvar e volta-la....

vc ja tentou como teste apenas salvar o conteudo em uma variavel e tentar formata-la com . ? so para teste mesmo ?
USUARIO.EXCLUIDOS 03/10/2006 12:09:44
#175260
Prezado Miguel Sotti,
Resolvi esse problema e também o problema de arredondamento armazenando SOMENTE INTEIROS nas tabelas de BD ou seja, se quero guardar: 1234,56 gravo no banco *100 -> 123456
Se preciso usar com tres decimais 345,678 gravo no banco *1000 ou seja, 345678
Dai sempre que vou ler/imprimir etc faço o contrário: /100 ou /1000.
Assim fica indepentente e também resolve o problema de números tipo: 1234,0094324235432 ou 1234,00000000009 que sempre dão tilt na hora de usar.
At,
USUARIO.EXCLUIDOS 03/10/2006 12:12:01
#175262
Amigão . . . usa isso aqui e nunca mais terás problemas !!!

Public Function Grava_Moeda(ByVal Valor As Variant) As Variant

Dim strInteiro As String
Dim strDecimal As String
Dim strRetorno As String

If Valor = Empty Or Valor = " " Or Valor = "" Then
Grava_Moeda = 0
Exit Function
End If

strRetorno = Format(Valor, "#0.0000;-#0.0000")
strDecimal = Mid(strRetorno, (InStr(1, strRetorno, ",") + 1))
strInteiro = Mid(strRetorno, 1, (InStr(1, strRetorno, ",") - 1))

'INSERIDO PARA CORRIGIR O ERRO DE MAIS DE UMA VIRGULA NO VALOR

If Not IsNumeric(strDecimal) Then strDecimal = "00"
strDecimal = Format(strDecimal, "####00")

Grava_Moeda = strInteiro & "." & strDecimal

End Function


USUARIO.EXCLUIDOS 03/10/2006 12:28:38
#175268
cara.. é só usar a função Str() no valor que sai certo.
M.SOTTI 03/10/2006 13:56:33
#175286
Pessoal,

Deu certo...! MUITO obrigado a todos.


Abraços


Miguel Sotti
USUARIO.EXCLUIDOS 03/10/2006 15:16:37
#175312
Citação:

M_SOTTI escreveu:
Pessoal,

Deu certo...! MUITO obrigado a todos.


Abraços


Miguel Sotti



Se o problema foi resolvido, por favor encerre o tópico e pontue o que melhor lhe ajudou...flw
Tópico encerrado , respostas não são mais permitidas