MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Extrair números de uma String e Somar

    Compartilhe

    zcarloslopes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 28/10/2010

    [Resolvido]Extrair números de uma String e Somar

    Mensagem  zcarloslopes em 21/11/2018, 18:35

    Boa tarde a todos,

    Mais uma vez venho pedir a vossa ajuda, pois não estou a conseguir encontrar uma solução e também não encontro nenhum exemplo por aqui.

    É o seguinte:

    Tenho uma String tipo:

    abcd [3] efgh[4] abd fac[10]xxxx .... etc

    A parte numérica está sempre entre [ ]

    Pretendo obter o resultado da soma, neste exemplo = 17 (3+4+10)

    Obrigado


    Última edição por zcarloslopes em 22/11/2018, 14:55, editado 1 vez(es)
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 21/11/2018, 19:43

    boa tarde,
    consegui fazer um algoritmo. testa ai.

    mas se alguem do forum poder ajudar ai eu e o zcarloslopes agradece, pois a funcao esta acumulando o resultado direitinho
    O problema é q a funcao nao esta conseguindo mandar o valor da variavel, ai fiz uma gambiarra.
    declarei a variavel no escopo do formulario e o resultado é atribuido nessa variavel que se chama
    totalSomaForm

    segue função:
    Código:
    Function getNumeroString(str As String, Optional ultimaLocalizacaoNumero As Integer, Optional totalSoma As Integer) As Integer

    Dim ocorrenciaIni As Integer
    Dim ocorrenciaFinal As Integer
    Dim numeroEncontrado As Integer
    Dim numeroCasaDecimal As Integer
    Dim indiceInicioBusca As Integer

    indiceInicioBusca = IIf(ultimaLocalizacaoNumero = 0, 1, ultimaLocalizacaoNumero) 'guarda o indice para inicio da busca
    ocorrenciaIni = InStr(indiceInicioBusca, str, "[") 'guarda o indice da primeira chave
    ocorrenciaFinal = InStr(indiceInicioBusca, str, "]") 'guarda o indice do fechamento da chave
    numeroCasaDecimal = (ocorrenciaFinal - ocorrenciaIni) - 1 'subtrai a diferenca de indice para saber o numero de casa decimais do numero localizado
    numeroEncontrado = CInt(Mid(str, (ocorrenciaIni + 1), numeroCasaDecimal)) 'converte o resultado em inteiro

    totalSoma = totalSoma + numeroEncontrado 'acumula o total

    If InStr((ocorrenciaFinal + 1), str, "[") > 0 Then 'se encontrar outra chave aberta a funcao sera chamada novamente
        getNumeroString str, (ocorrenciaFinal + 1), totalSoma
    Else 'caso nao encontrar retorna o resultado
        totalSomaForm = totalSoma 'gambiarra, pois por algum motivo nao esta retornando o resultado pela funcao.
                                  'esta variavel esta declarada no inicio do form
        getNumeroString = totalSoma 'era para retornar o resultado
    End If

    End Function

    para usar:
    Código:
    'no exemplo estou usando um click de um botao
    Private Sub Comando17_Click()
    Dim str As String
    Dim resultado As Integer

    str = "abcde[4]abcdfac[10]xxxx[3]xx"

    resultado = getNumeroString(str) 'esta retornando zero
    MsgBox "resultado: " & totalSomaForm 'Exibe o total acumulado na variavel totalSomaForm
    End Sub

    veja se no seu access retorna certo.

    zcarloslopes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 28/10/2010

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  zcarloslopes em 21/11/2018, 20:32

    Muito obrigado pela rápida resposta,

    Não está funcionando ainda.

    Na primeira tentativa dava erro ao chamar a função 'totalSomaForm' não estava definida.

    Defini a variável como Integer, já não dá erro, mas retoma o valor '0'

    Mais alguma dica?

    Obrigado

    P.S. Estou a usar o access 2003
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 21/11/2018, 20:42

    no 2003 eu nao sei se funciona, eu fiz no 2007
    mas vc esta mandando exibir a variavel totalSomaForm?

    zcarloslopes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 28/10/2010

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  zcarloslopes em 21/11/2018, 20:48

    Na MsgBox aquando chama a função tem o 'totalSomaForm'
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 21/11/2018, 20:51

    manda a string q vc esta tentando, deixa eu ver se aqui funciona. rs

    zcarloslopes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 28/10/2010

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  zcarloslopes em 21/11/2018, 21:05

    Esta é a String:

    4
    Bloco Operatório [1] - 24-09-2018/09-11-2018
    Cardiologia [2] - 29-10-2018/30-11-2018
    Cardiologia [1] - 24-09-2018/30-11-2018
    Cirurgia Vascular [1] - 01-11-2018/30-11-2018
    Estomatologia [1] - 15-03-2018/28-12-2018
    Fisiatria [1] - 22-10-2018/21-11-2018
    Fisiatria [2] - 29-10-2018/07-12-2018
    Imagiologia [1] - 31-10-2018/16-11-2018
    Internamento Cirúrgico [2] - 24-09-2018/13-12-2018
    Internamento Cirúrgico [1] - 08-10-2018/26-11-2018
    Internamento Médico [4] - 14-09-2018/18-01-2019
    Internamento Médico [1] - 08-10-2018/26-11-2018
    Internamento Médico [2] - 22-10-2018/04-12-2018
    Neurofisiologia [2] - 22-10-2018/16-11-2018
    Otorrinolaringologia [1] - 24-09-2018/16-11-2018
    Patologia Clínica [1] - 22-10-2018/09-11-2018
    Patologia Clínica [1] - 22-10-2018/09-11-2018
    Pneumologia [1] - 29-10-2018/30-11-2018
    Unidade de Cuidados Intermédios [1] - 24-09-2018/09-11-2018

    Preciso somar os valores entre [ ]
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 22/11/2018, 11:42

    cada linha dessa é um registro? se for eu preciso adaptar o codigo para percorrer os registros.
    pq se nao o resultado nao ira somar nada, mas sim apenas retornar o numero entre colchetes

    exemplo:
    se passar a string abaixo
    Bloco Operatório [1] - 24-09-2018/09-11-2018

    o retorno sera 1

    nesse outro exemplo ira retornar 2
    Cardiologia [2] - 29-10-2018/30-11-2018

    agora se vc quisesse somar esse 2 + 1 o codigo nao ira atender.
    se vc informar onde vc ira exibir esse resultado e o local onde os dados se encontra
    sera mais precisa a minha resposta.

    abraços

    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 22/11/2018, 12:20

    no banco em anexo eu interpretei q cada string q vc informou seria um registro,
    entao eu adaptei o codigo para percorrer por todos os registros e retornar o valor acumulado

    no form "base" vc ira ver um exemplo de uso.
    a chamada da funcao esta no evento ao carregar do form e as funções estão no modulo "mod_extrair"

    testa ai e qualquer duvida estamos ai

    abraço.
    Anexos
    Extrair.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 3 vez(es)

    zcarloslopes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 28/10/2010

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  zcarloslopes em 22/11/2018, 13:46

    Obrigado mais uma vez.

    Vou tentar adaptar o seu código.

    A String que eu enviei é apenas um único registo numa textbox01 com quebra de linha.

    O Resultado será exibido no Título de uma MsgBox que mostra a String ao Duplo Click na textbox01 no formato que enviei.

    Obrigado


    P.S. Vou tentar explicar de uma forma mais pormenorizada:

    Tenho um Form tipo Calendário que me mostra os Estágios Ativos dentro do intervalo de datas em que o respectivo dia está incluído.

    O exemplo que enviei é o texto da txtbox 'txtDayBlock01'. No entanto, nos dias com maior atividade (como String enviada) fica um pouco complicado ver todos os registo dentro da txtbox.

    Então pensei em criar uma MsgBox ao DuploClick que me exibisse toda a String (MsgBox "'" & Me.txtDayBlock01 & "'", vbInformation, "Informação Completa do dia '" & Left(Me.txtDayBlock02, 3) & "  '")

    Até aqui tudo tem funcionado direito.

    Entretanto lembrei que seria muito útil ter o total de Estágios ativos na tal MsgBox.

    Para isso preciso apenas somar os valores entre [ ] dentro da String da txtDayBlock01 e acrescentar no Título da MsgBox.

    Obrigado mais uma vez
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 22/11/2018, 14:31

    agora vai ein. kk
    olhe o form "base2" coloquei toda a string que vc passou em um unico campo.
    retornou certinho a soma. veja se com vc da certo.
    o uso da função esta no evento ao clicar do botão do form.

    abraço
    Anexos
    Extrair.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (49 Kb) Baixado 5 vez(es)

    zcarloslopes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 39
    Registrado : 28/10/2010

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  zcarloslopes em 22/11/2018, 14:53

    Muitíssimo obrigado!!

    Funciona na perfeição. Era exatamente o que eu pretendia.

    Um abraço.
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 375
    Registrado : 01/08/2011

    Re: [Resolvido]Extrair números de uma String e Somar

    Mensagem  ronaldojr1 em 22/11/2018, 15:03

    que bom que chegamos ao resultado esperado. rs

    o forum agradece o retorno.

    sucesso!!!

      Data/hora atual: 16/12/2018, 11:23