none
Web Services - Receber valor de Arrays RRS feed

  • Pergunta

  •  

    Sou iniciante em vb.net e estou meio perdido em alguns quesitos. Crieu um Web Service e o mesmo será consumido dentro do Office 2003, utilizando para isso o Web Service Toolkit 2003.

     

    Eu utilizo o código abaixo para buscar dados em um banco de dados em meu servidor:

     

    <WebMethod()> _

    Public Function Acesso(ByVal chaves As String) As String()

     

    Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Inetpub\vhosts\kartoffel.com.br\httpdocs\database\registros.mdb"

    Dim sql As String = "SELECT Aplicativo,Chave,Solicitante From Reg_Aplics where Chave='" & chaves & "'"

     

    Dim conn As Connection = New Connection

    Dim connMode As Integer = ConnectModeEnum.adModeUnknown

    conn.CursorLocation = CursorLocationEnum.adUseServer

    conn.Open(ConnectionString, "", "", connMode)

     

    Dim cmdType As Integer = CommandTypeEnum.adCmdText

    Dim rs As _Recordset = conn.Execute(sql)

     

    Dim ds As DataSet = New DataSet("Recordset")

    Dim da As OleDbDataAdapter = New OleDbDataAdapter

     

    Dim result(3) As String

    result(0) = rs(0).Value

    result(1) = rs(1).Value

    result(2) = rs(2).Value

    rs.Close()

    Return result

    End Function

     

    Ele gera corretamente o XML da requisição, como mostrado abaixo:

     

     <?xml version="1.0" encoding="utf-8" ?>

    - <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
      <string>Master Protocolo</string>
      <string>123456</string>
      <string>REDESOFT</string>
      <string xsi:nil="true" />
      </ArrayOfString>
     
    Dentro do office eu utilizo o seguinte comando para chamar a função:
     
    Dim ccp As New clsws_teste
    Me.Aplic = ccp.wsm_Acesso(Me.Ch)
     
    O que ocorre, é que quando era apenas uma string, eu conseguia receber dentro do forme, mas não sei pegar as mesmas informações que estão sendo retornados através de Arrays.
     
    Alguem poderia me dar uma dia com o código ou me indicar conteudo para leitura?
     
    Desde já agradecido.
     
     
    domingo, 14 de dezembro de 2008 18:59

Respostas

  •  

    Code Snippet

    Dim response(3) As String

    Dim ccp As New clsws_teste
    response = ccp.wsm_Acesso(Me.Ch)
    Me.Aplic = response(0)

     

     

     
    segunda-feira, 15 de dezembro de 2008 15:13
    Moderador

Todas as Respostas

  •  

    Code Snippet

    Dim response(3) As String

    Dim ccp As New clsws_teste
    response = ccp.wsm_Acesso(Me.Ch)
    Me.Aplic = response(0)

     

     

     
    segunda-feira, 15 de dezembro de 2008 15:13
    Moderador
  •  

    Rui, minha divida está ficando grande. Muito obrigado pela ajuda.

     

     

    Só para constar e o tópico poder beneficiar os que teveram a mesma duvida, em response(3), colocamos somente responde(), com abaixo: Como sou novo no .net, não seis as implicações, mas dentro do Office que era o intuito de consumir o Web Service, tiver que fazer essa pequena modificação para funcionar.

     

    Dim response() As String

    Dim ccp As New clsws_teste
    response = ccp.wsm_Acesso(Me.Ch)
    Me.Aplic = response(0)

     

     

    segunda-feira, 15 de dezembro de 2008 20:35
  •  

    Bem na verdade da na mesma por ou nao o 3....

     

    é q pondo o 3.. vc informa q o vetor tera apenas 3 "linhas", sem ele pode ter um numero de linhas qq que vai vir do metodo ccp.wsm_Acesso(Me.Ch)

    eu pus o 3 porque nunca se sabe quem vai mexer um dia no sistema e assim o cara ja sabe q na resposta tem q vir sempre 3 registros...

     

    mas a funcionalidade é a mesma... tanto faz por o 3 ou apenas um comentario no fonte avisando

     

    T+

    terça-feira, 16 de dezembro de 2008 18:48
    Moderador
  • Especificamente no Access, colocando valor no Responde, deu o erro "Erro de compilação - Não foi possivel atribuir uma matriz", mas como o VBA é cheio de "frufru" acreditei ser por isso.

     

    Aproveitando a deixa, mais uma vez muito obrigado pela ajudar. Se um dia estiver ao meu alcance retribuir, estarei a disposição.

     

     

    terça-feira, 16 de dezembro de 2008 22:46
  •  

    Ah.. bem como eu disse faz um bom tempo q nao uso VB tmb.... acho q confundi com delphi dessa vez
    quarta-feira, 17 de dezembro de 2008 11:18
    Moderador