LOCALIZAR N¬šÃ€ŠÃ‚º NO MEIO DE UMA STRING

USUARIO.EXCLUIDOS 11/01/2005 10:33:28
#59956
Prezados Companheiros:

O registro de um campo de uma tabela minha retorna a seguinte string
"bombona de 50 kg" ou
"tambor de 208,65 kg"
Como eu preciso fazer um cálculo (exemplo 1500 / 50), preciso pegar somente os números p/ fazer esta divisão.
Alguém tem alguma sugestão de como fazer isto ?

Existe algum função que retorne algo parecido com

O caracter da posição tal é um número ?

Grato
THIAGO.CESAR 11/01/2005 10:37:22
#59957
Sequencia = mid(String,Posicao,Tamanho)
Você pode fazer o seguinte:
 for i = 1 to len(produto)
Algarismo = mid(produto,i,1)
if isnumeric(algarismo) then
numero = numero & algarismo
end if


Vc deve ter o cuidado de guardar também as vírgulas, incrementando o código acima. qualquer coisa é so falar...
USUARIO.EXCLUIDOS 11/01/2005 10:41:13
#59960
Olá,

Se bem entendi pelo seu exemplo, vc precisa pegar o Valor 50 para então dividir por outro valor, certo?

Ser for assim, vc pode usar a função Mid$

String:

variavel = Mid$(variavel, 0,0)

O primeiro 0 - representa o número de casas que vc quer pegar, 1,2,3... etc...
O segundo 0 - representa o número de casas, a partir de que ponto o sistema irá pegar o valor desejado, da direita para a esquerda.

Caso vc não tenha uma valor padrão deixar definido, vc pode criar variáveia dentro de um do while, fazendo a identificação dos valores para então fazer as contas depois.

Espero ter ajudado.

Sds,

Plínio

THIAGO.CESAR 11/01/2005 10:41:41
#59962
Corrigindo e completando o código acima:

Function PegarNumero(Produto as String) as Double
For i = 1 to Len(Produto)
Algarismo = Mid(Produto,i,1)
If isnumeric(algarismo) or algarismo = "," then numero = numero & algarismo
Next
PegarNumero = Numero
End Function

Para chamar: Total = PegarNumero(Descrição)
USUARIO.EXCLUIDOS 11/01/2005 10:58:01
#59974
Resposta escolhida
Se sempre vier " ******** 50,53 KG"
é só retirar [ESPAÇO + KG = 3 CARACTERES] dai vem caminhando da esquerda para direita até encontrar outro espaço.


Mais Ou menos assim:

Public Function VALOR(ByVal sValor As String) As String
Dim Tmp As String
Dim I As Integer

I = 1 'Atribuindo valor ao contador
VALOR = Replace(sValor, " kg", "") 'Retirando o espaço e o Kg
Tmp = Right(VALOR, I) 'Atribuindo valor a var Tmp

While Left(Tmp, 1) <> " " 'Até encontrar o espaço
I = I + 1
Tmp = Right(VALOR, I)
Wend

VALOR = Trim(Tmp) 'retorna o valor
End Function
USUARIO.EXCLUIDOS 11/01/2005 10:59:57
#59976
essa função funciona é so passar os valores ela funciona em qualquer caso desde que observado se é valido sempre " kg" , sem ponto , porem agora é so incrementar.
Tópico encerrado , respostas não são mais permitidas