CONVERSAO DE DADOS - PONTO DECIMAL
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
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
Amigo vc ja verificou as configuracoes do seu micro ?
Verificar no painel de controle em opcoes/configuracoes regionais se o separador esta como , ou .
Verificar no painel de controle em opcoes/configuracoes regionais se o separador esta como , ou .
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.
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?
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?
à ¨ 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 ?
vc ja tentou como teste apenas salvar o conteudo em uma variavel e tentar formata-la com . ? so para teste mesmo ?
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,
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,
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
cara.. é só usar a função Str() no valor que sai certo.
Pessoal,
Deu certo...! MUITO obrigado a todos.
Abraços
Miguel Sotti
Deu certo...! MUITO obrigado a todos.
Abraços
Miguel Sotti
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