Array
(
)

WebService DataSet vs Crystal Report

V1t0rs0uz4
   - 09 jan 2008

Pessoal,

Estou com o seguinte cenário aqui em desenvolvimento.

Tenho um web service que faz a conexão com o banco de dados remoto, executa uma query e me retorna um DataSet. Como podem ver abaixo.

#Código

<WebMethod(Description:="Lista dados de um motorista")> _
    Public Function ListaMotoristas(ByVal Placa As String) As DataSet
        ´ Database Connection
        Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\database\CRP.mdb")

        ´ Montando o SQL String
        Dim sql As String = _
        "SELECT " & _
        "FORMAT (tb_motoristas.DataCadastro, ´dd/mm/yyyy´) AS dtCadastro," & _
        "tb_motoristas.Placa AS txPlaca," & _
        "tb_motoristas.Nome AS txNome," & _
        "FORMAT (tb_motoristas.Nascimentomotorista, ´dd/mm/yyyy´) AS dtNascimento," & _
        "tb_motoristas.Identidade AS txIdentidade," & _
        "tb_motoristas.Cpf AS txCpf," & _
        "tb_motoristas.Pai AS txPai," & _
        "tb_motoristas.Mãe AS txMae," & _
        "tb_motoristas.LinhaNumero AS nuLinha," & _
        "tb_motoristas.LinhaOrigem AS txOrigem," & _
        "tb_motoristas.LinhaDestino AS txDestino," & _
        "tb_motoristas.UltimaSemanaPaga AS nuSemana," & _
        "FORMAT (tb_motoristas.DataUltimoPagamento, ´dd/mm/yyyy´) AS dtPagamento," & _
        "´Permissionário´ AS txAtividade" & _
        " FROM " & _
        "motoristas AS tb_motoristas" & _
        " WHERE " & _
        "tb_motoristas.Placa=@txPlaca" & _
        " ORDER BY " & _
        "tb_motoristas.DataCadastro ASC" & _
        " UNION ALL " & _
        " SELECT " & _
        "FORMAT (tb_auxiliares.DataCadastro, ´dd/mm/yyyy´) AS dtCadastro," & _
        "´´ AS txPlaca," & _
        "tb_auxiliares.Nome AS txNome," & _
        "FORMAT (tb_auxiliares.Nascimento, ´dd/mm/yyyy´) AS dtNascimento," & _
        "tb_auxiliares.Identidade AS txIdentidade," & _
        "tb_auxiliares.Cpf AS txCpf," & _
        "tb_auxiliares.Pai AS txPai," & _
        "tb_auxiliares.Mãe AS txMae," & _
        "´´ AS nuLinha," & _
        "´´ AS txOrigem," & _
        "´´ AS txDestino," & _
        "´´ AS nuSemana," & _
        "´´ AS dtPagamento," & _
        "´Auxiliar´ AS txAtividade" & _
        " FROM " & _
        "motoristas AS tb_motoristas" & _
        " INNER JOIN Auxiliares AS tb_auxiliares ON tb_auxiliares.NumeroMotorista=tb_motoristas.NumeroMotorista " & _
        " WHERE " & _
        "tb_motoristas.Placa=@txPlaca"

        ´ Passando os Parametros ao SQL
        Dim comm As New OleDbCommand(sql, conn)
        comm.Parameters.AddWithValue("@txPlaca", Placa)

        ´ Criando o DataAdapter e DataSet
        Dim da As New OleDbDataAdapter(comm)
        Dim ds As New DataSet

        ´ Abrindo a Conexão
        conn.Open()

        ´ Carregando o DataSet
        da.Fill(ds, "motoristas")

        ´ Fechando a Conexão
        conn.Close()

        ´ Retornando o Resultado
        Return ds
    End Function


Do outro lado, aonde encontra-se o smartclient. Consumo o webservice, chamo o método em questão e passo o parametro de busca. O webservice me retorna os dados corretamente. E eu coloco isso tudo em um DataSet.

#Código
´ Declarando as Variáveis do Projeto
Dim Motoristas As System.Data.DataSet
Dim wsCRP As New SmartMotoristas.wsMotoristas.wsMotoristas

´ Verificando e Validando tbPlaca.text
If (tbPlaca.Text <> "" And tbPlaca.Text.Length = 8) Then
   ´ Tratamento de Exception
   Try
      ´ Buscando a Placa do Veículo
      Motoristas = wsMotoristas.ListaMotoristas(tbPlaca.Text)

   Catch ex As System.Net.WebException
      ´ Enviando Mensagem ao Usuário
      MessageBox.Show("Servidor Indisponível, Tente Novamente mais Tarde", "Mensagem de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)

      ´ Saindo da SubRotina
      Exit Sub
   
   Catch ex As Exception
      ´ Enviando Mensagem de Erro Desconhecido ao Usuário
      MessageBox.Show("Ocorreu um Erro Desconhecido" & vbCrLf & "Entre em Contato com o Desenvolvimento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
      
      ´ Saindo da SubRotina
      Exit Sub
   End Try
End If


Beleza até ai funciona tudo perfeitamente, consigo pegar o DataSet Motoristas e manipular normalmente no smartclient. O problema acontece quando tento criar um relatório do crystal report com esses dados. Ja mandei criar um DataSource mais quando escolho o WebService ele abre uma janela para referenciar o webservice mais naum monta e defini o dataset como é feito quando criamos de um banco de dados. Então como criar o relatório se não tenho daonde pegar os dados, os campos já que ele naum aceita pegar direto de um webservice.

V1t0rs0uz4
   - 09 abr 2008

up!

Groove
   - 14 abr 2008

Putz eu sabia essa mas com ´cobrador´, hehehehe
foi mal to de brincadeira, mas diz aí conseguiu resolver???
se conseguiu onde estava o erro pois acho q estou tendo a mesma coisa aqui!!!

valew!!!!