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!!!!