MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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

    [Resolvido]Como usar uma variável em uma consulta SOAP

    avatar
    enio.eltz
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    Registrado : 19/07/2016

    [Resolvido]Como usar uma variável em uma consulta SOAP Empty [Resolvido]Como usar uma variável em uma consulta SOAP

    Mensagem  enio.eltz 26/5/2021, 16:14

    Bom dia

    Estou com uma dúvida em relação ao uso de uma "variável" em uma consulta a um web service.

    Antes de tudo agradeço ao DamascenoJr por alguns códigos que ele postou, que durante minhas pesquisas para atender minha ideia me ajudaram bastante.

    Eu tenho um web service e estou criando um código para buscar dados. Ele usa SOAP para a consulta. Antes de realizar testes no Access 2013 eu usei um client SOAP para testar, onde consegui consultar e obter o resultado.

    Então, eu criei um código VBA para buscar os dados conforme abaixo.

    Código:
       strEnv = ""
            strEnv = strEnv & "<x:Envelope xmlns:x=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:web=""MINHA_URL_DE_CONSULTA"">" & vbNewLine
            strEnv = strEnv & "    <x:Header/>" & vbNewLine
            strEnv = strEnv & "    <x:Body>" & vbNewLine
            strEnv = strEnv & "        <web:RetornaClientePorNome>" & vbNewLine
            strEnv = strEnv & "            <web:auth>" & vbNewLine
            strEnv = strEnv & "                <web:usuario>USUARIO</web:usuario>" & vbNewLine
            strEnv = strEnv & "                <web:senha>SENHA</web:senha>" & vbNewLine
            strEnv = strEnv & "            </web:auth>" & vbNewLine
            strEnv = strEnv & "            <web:nome_cliente>NOME_DO_CLIENTE</web:nome_cliente>" & vbNewLine
            strEnv = strEnv & "        </web:RetornaClientePorNome>" & vbNewLine
            strEnv = strEnv & "    </x:Body>" & vbNewLine
            strEnv = strEnv & "</x:Envelope>" & vbNewLine
            
            Dim strURL
            
            strURL = "MINHA_URL_DE_ACESSO"
            
            Set xmlHttp = New MSXML2.XMLHTTP30

            With xmlHttp
                .Open "POST", strURL, False
                .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
                .setRequestHeader "Content-Length", "Length"
                .send strEnv
            End With
            
            If CLng(xmlHttp.Status) < 300 Then
            
             strTemp = xmlHttp.responseText

             Me.cmp_resposta.Value = strTemp

            Else
            
             Me.cmp_resposta.Value = "ERRO"
            
            End If

            Set xmlHttp = Nothing

    Ao clicar no botão de comando o Acces consulta e coloca a resposta em um campo (para testes iniciais).

    A minha duvida é seu eu consigo fazer com que o usuário, a senha e o nome do cliente na parte do código abaixo sejam obtidos a partir de um formulário.

    Código:
       strEnv = ""
            strEnv = strEnv & "<x:Envelope xmlns:x=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:web=""MINHA_URL_ACESSO"">" & vbNewLine
            strEnv = strEnv & "    <x:Header/>" & vbNewLine
            strEnv = strEnv & "    <x:Body>" & vbNewLine
            strEnv = strEnv & "        <web:RetornaClientePorNome>" & vbNewLine
            strEnv = strEnv & "            <web:auth>" & vbNewLine
            strEnv = strEnv & "                <web:usuario>MEU_USUARIO</web:usuario>" & vbNewLine
            strEnv = strEnv & "                <web:senha>MINHA_SENHA</web:senha>" & vbNewLine
            strEnv = strEnv & "            </web:auth>" & vbNewLine
            strEnv = strEnv & "            <web:nome_cliente>NOME_DO_CLIENTE</web:nome_cliente>" & vbNewLine
            strEnv = strEnv & "        </web:RetornaClientePorNome>" & vbNewLine
            strEnv = strEnv & "    </x:Body>" & vbNewLine
            strEnv = strEnv & "</x:Envelope>" & vbNewLine

    Fiz algumas pesquisas aqui no fórum e na internet mas ainda não identifiquei um exemplo que me auxiliasse.

    Desde já agradeço a ajuda de todos!!

    Enio Eltz Filho.
    avatar
    enio.eltz
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    Registrado : 19/07/2016

    [Resolvido]Como usar uma variável em uma consulta SOAP Empty Re: [Resolvido]Como usar uma variável em uma consulta SOAP

    Mensagem  enio.eltz 26/5/2021, 20:54

    Olá

    Fiz mais algumas pesquisas e fiz umas alterações que fizeram eu alcançar meu objetivo.

    Segue abaixo o código para quem precisar. Talvez haja uma maneira mais simples de fazer, mas atendeu a necessidade.

    Código:
       Dim User, Pass, Nome
        Dim strVarUser, strVarUser1, strVarUser2, strVarUser3
        Dim strVarPass, strVarPass1, strVarPass2, strVarPass3
        Dim strVarNome, strVarNome1, strVarNome2, strVarNome3
        Dim strVar001, strVar002, strVar003, strVar004, strVar005, strVar006, strVar007, strVar008, strVar009, strVar010, strVar011, strVar012
        
        User = Me.campo_user_ws     'faz User com o que tem em campo_user
        Pass = Me.campo_senha_ws    'faz Pass com o que tem em campo_senha
        Nome = Me.campo_nome_ws     'faz Nome com o que tem em campo_nome
        
        '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        
        'montagem do campo para o usuário parte 1
        
        strVarUser1 = strQuote & "                  <web:usuario>"
        strVarUser2 = User
        strVarUser3 = "</web:usuario>" & strQuote
        
        'montagem do campo para o usuário parte 2
        
        strVarUser = strVarUser1 & strVarUser2 & strVarUser3
        
        '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        
        'montagem do campo para a senha parte 1
        
        strVarPass1 = strQuote & "                 <web:senha>"
        strVarPass2 = Pass
        strVarPass3 = "</web:senha>" & strQuote
        
        'montagem do campo para o usuário parte 2
        
        strVarPass = strVarPass1 & strVarPass2 & strVarPass3
        
        '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        
        'montagem do campo para o nome parte 1
        
        strVarNome1 = strQuote & "             <web:nome_cliente>"
        strVarNome2 = Nome
        strVarNome3 = "</web:nome_cliente>" & strQuote
        
        'montagem do campo para o nome parte 2
        
        strVarNome = strVarNome1 & strVarNome2 & strVarNome3
        
        '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        
        'montagem pre consulta no WS
        
        strVar001 = " <x:Envelope xmlns:x=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:web=""http://35.199.109.27/webservice/"">"
        strVar002 = "     <x:Header/>"
        strVar003 = "     <x:Body>"
        strVar004 = "         <web:RetornaClientePorNome>"
        strVar005 = "             <web:auth>"
        strVar006 = strVarUser
        strVar007 = strVarPass
        strVar008 = "             </web:auth>"
        strVar009 = strVarNome
        strVar010 = "         </web:RetornaClientePorNome>"
        strVar011 = "     </x:Body>"
        strVar012 = " </x:Envelope>"
          
        '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        
        'montagem final para a conulta no WS
        
        strEnv = ""
            strEnv = strEnv & strVar001 & vbNewLine
            strEnv = strEnv & strVar002 & vbNewLine
            strEnv = strEnv & strVar003 & vbNewLine
            strEnv = strEnv & strVar004 & vbNewLine
            strEnv = strEnv & strVar005 & vbNewLine
            strEnv = strEnv & strVar006 & vbNewLine
            strEnv = strEnv & strVar007 & vbNewLine
            strEnv = strEnv & strVar008 & vbNewLine
            strEnv = strEnv & strVar009 & vbNewLine
            strEnv = strEnv & strVar010 & vbNewLine
            strEnv = strEnv & strVar011 & vbNewLine
            strEnv = strEnv & strVar012 & vbNewLine
            
        '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        
        'busca no WS
            
            Dim strURL
            
            strURL = "http://35.199.109.27/webservice/index.php"
            
            Set xmlHttp = New MSXML2.XMLHTTP30

            With xmlHttp
                .Open "POST", strURL, False
                .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
                .setRequestHeader "Content-Length", "Length"
                .send strEnv
            End With
            
            If CLng(xmlHttp.Status) < 300 Then
            
             strTemp = xmlHttp.responseText

             Me.cmp_resposta.Value = strTemp

            Else
            
             Me.cmp_resposta.Value = "ERRO"
            
            End If

            Set xmlHttp = Nothing

    Abraço!!!

    Enio Eltz Filho.


    Última edição por enio.eltz em 26/5/2021, 20:56, editado 1 vez(es)
    avatar
    enio.eltz
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    Registrado : 19/07/2016

    [Resolvido]Como usar uma variável em uma consulta SOAP Empty Re: [Resolvido]Como usar uma variável em uma consulta SOAP

    Mensagem  enio.eltz 26/5/2021, 20:55

    Faltou marcar como resolvido.

      Data/hora atual: 23/6/2021, 05:39