• Viernes 8 de Noviembre de 2024, 19:43

Autor Tema:  Reportes en vb.net que usen web services  (Leído 4926 veces)

blackphoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: pe
    • Ver Perfil
Reportes en vb.net que usen web services
« en: Jueves 24 de Junio de 2010, 21:48 »
0
Hola soy nuevo en esto de los reportes en vb.net 2005
he visto que hay reporting services y crystal reports

He probado con los dos pero mi problema es el siguiente
Mi aplicacion windows usa un web services en donde estan todos los metodos para recuperar datos insertar etc..

Y lo que quiero hacer es un reporte usando los datos del web service
(en el web service tengo un metodo que devuelve datos de la bd y que pide dos parametros)

Que tendria que hacer desde la aplicacion crear el reporte via codigo?

por favor ayudenme..

saludos..

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Reportes en vb.net que usen web services
« Respuesta #1 en: Viernes 25 de Junio de 2010, 16:35 »
0
Podrias poner mas detalles sobre el web service que estas usando como se llama y tambien el framewor que estas usando.

Hasta donde has avanzado que has hecho... en fin todos los detalles que puedas.

Saludos.

Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

blackphoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: pe
    • Ver Perfil
Re: Reportes en vb.net que usen web services
« Respuesta #2 en: Viernes 25 de Junio de 2010, 20:20 »
0
Hola, ok te explico:
Estoy trabajando con visual studio 2005 vb.net netframework 2.0
tengo una aplicacion windows form de facturacion que consume un servicio web, este servicio web contiene los metodos para insertar actualizar listar datos.

Entre esos metodos tengo este:

  <WebMethod()> _
 Public Function ReporteMensualFacturas(ByVal fin As DateTime, ByVal ffi As DateTime) As DataTable
        Dim sqlCmd As New SqlCommand
        Dim dA As New SqlDataAdapter
        Dim dS As New DataSet

        sqlCmd.Connection = miConnection.getConnection

        sqlCmd.CommandType = CommandType.StoredProcedure
        sqlCmd.CommandText = "SPL_ReporteMensualfacturas"

        sqlCmd.Parameters.AddWithValue("@fin", fin)
        sqlCmd.Parameters.AddWithValue("@ffi", ffi)

        dA.SelectCommand = sqlCmd
        dA.Fill(dS)

        Return dS.Tables(0)
    End Function


Este metodo requiere 2 parametros que son fecha inicial y fecha final, bueno me retorna en datable 3 campos que son codigo nombre y monto.

Lo quer quiero saber es como hacer para publicar eso en un reporte ( ya sea crystal o reportin service cual me recomendrias), tambien como hacer para mandarle los parametros .

Por favor me puedes ayudar con el codigo o procedimiento para realizarlo. muchas gracias.

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Reportes en vb.net que usen web services
« Respuesta #3 en: Lunes 28 de Junio de 2010, 16:36 »
0
Ok...

Bueno... hay una pagina muy buena que te puede ayudar con lo que estas necesitando....  pero esta en ingles. si tienes problemas con el idioma o preguntas avisame ...

Esto es para los reportes con Crystal Reports.
http://msdn.microsoft.com/en-us/library/ms227467(v=VS.90).aspx

Espero que esto te ayude... hay dos cosas que tienes que recordar.

1 Si vas a usar Crystalreports Recuerda usar el Name Space
2 La clase para Crystalreports es  ReportClass reporte = new ReportClass();
Esta clase tiene una propiedad con la que puedes enviar los datos a un determinado reporte ya previamente creado.

Bueno. Suerte.

Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

blackphoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: pe
    • Ver Perfil
Re: Reportes en vb.net que usen web services
« Respuesta #4 en: Martes 29 de Junio de 2010, 01:36 »
0
hola la solucion fue crear el crystal report en el servicio web y publicar el rpt como un asmx.

entonces en mi aplicacion windows hago esto:

Citar
Me.CrystalReportViewer1.ReportSource = "http: //localhost:1042/WS_Grifo/ReporteMensualFacturaService.asmx"
Y al ejecutar

me pide los parametros pero en una ventana grande y tambien me pide logeo de usuario d sql.

En si necesito enviarle estos parametros de un textbox de mi app.

COmo podria enviarle parametros.

estuve buscando pero ninguna solucion me funciona pues sigue apareciendo la ventana que pide parametros..

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Reportes en vb.net que usen web services
« Respuesta #5 en: Martes 29 de Junio de 2010, 17:31 »
0
Bueno primero que nada... tienes que haber creado el reporte. Me imagino que ya lo creastes por que tienes la ruta... ahora bien no tienes que poner esto "http: //localhost:1042/WS_Grifo" en lugar de eso... puedes poner solo

Citar
"../WS_Grifo/ReporteMensualFacturaService.asmx"

de esa forma deberia de funcionar.

Por otro lado tienes que crear los paremetro en el Reporte  para poder llamarlos luego en el codigo...

Creas los parametros en el reporte  en el Menu principal tienes que ir a Crystal Reports-> Field Explorer y luego en el field explorer buscas la opcion Parameter Fields y click derecho y luego new Alli creas el parametro.

Luego en el codigo... haces algo como esto.

Código: C#
  1.  
  2. ReportDocument cryRpt = new ReportDocument();
  3.             cryRpt.Load("PUT CRYSTAL REPORT PATH HERECrystalReport1.rpt");
  4.  
  5.             ParameterFieldDefinitions crParameterFieldDefinitions ;
  6.             ParameterFieldDefinition crParameterFieldDefinition ;
  7.             ParameterValues crParameterValues = new ParameterValues();
  8.             ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
  9.  
  10.             crParameterDiscreteValue.Value = textBox1.Text;
  11.             crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
  12.             crParameterFieldDefinition = crParameterFieldDefinitions["Customername"];
  13.             crParameterValues = crParameterFieldDefinition.CurrentValues;
  14.  
  15.             crParameterValues.Clear();
  16.             crParameterValues.Add(crParameterDiscreteValue);
  17.             crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
  18.  
  19.             crystalReportViewer1.ReportSource = cryRpt;
  20.             crystalReportViewer1.Refresh();
  21.  


Tienes que usar...

Código: C#
  1.  
  2. using CrystalDecisions.CrystalReports.Engine;
  3. using CrystalDecisions.Shared;
  4.  
  5.  
  6.  


Avisame si eso te ayuda...

Saludos,


Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

blackphoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: pe
    • Ver Perfil
Re: Reportes en vb.net que usen web services
« Respuesta #6 en: Martes 29 de Junio de 2010, 19:49 »
0
Ok ese codiogo ya lo tengo en la parte codigo el asmx..

hasta ahi todo bien..


Los parametors ya estaban creados ya que en el reporte al crearlo (en el webservice) , al crear el reporte lo enlaze a datos y sus campos parametros etc,
es por eso que al ejecutar me pide los parametros y logeo.


el codigo que me diste lo puse en el asmx como un public sub.

pero aparte hay otro que trae por deefecto en el asmx:

Public Sub New()
        Me.ReportSource = Me.Server.MapPath("ReporteMesFactura.rpt")
     
   
    End Sub

Segun entiendo ese es el que se encarga de cargar el reporte, entonces dime como reemplazaria eso con el codigo que tu me brindaste, pero eso si con los parametros y en lugar te poner textbox.text como value del parametro le pondria una variable.


Esa variable es la que tengo que recibir de mi aplicacion windows.

por que en mi aplicacion wndows invocare al webservice que contiene dicho reporte.


gracias.

blackphoenix

  • Nuevo Miembro
  • *
  • Mensajes: 5
  • Nacionalidad: pe
    • Ver Perfil
Re: Reportes en vb.net que usen web services
« Respuesta #7 en: Martes 29 de Junio de 2010, 19:54 »
0
Mira ese codigo es el que te digo que lo tengo, es algo parecido al que tu me brindaste..


Código: vb.net
  1.  
  2.  
  3.  
  4. Public Sub CargaReporteFacturas(ByVal parametroF1 As DateTime, ByVal parametroF2 As DateTime)
  5.  
  6.         Dim reportPath As String = Me.Server.MapPath("ReporteMesFactura.rpt")
  7.         Report.Load(reportPath)
  8.         'Report.DataSourceConnections[0].SetCo
  9.         F1.Value = parametroF1
  10.         F2.Value = parametroF2
  11.         Report.SetParameterValue("@fin", F1)
  12.         Report.SetParameterValue("@ffi", F2)
  13.         Report.SetDatabaseLogon("sa", "sa")
  14.        
  15.         Me.ReportSource = Report
  16.              
  17.     End Sub
  18. End Class
  19.  
  20.  

Pero ese codigo se supone que debo cargarlo en este metodo
Código: vb.net
  1.        
  2.     Public Sub New()
  3.         Me.ReportSource = Me.Server.MapPath("ReporteMesFactura.rpt")
  4.        
  5.       'esta linea esta comentada por que si llamo al metodo y le pongo esos parametros si funciona lo que quiero saber es como mandarle los parametros desde mi aplicacion windows.
  6.         'CargaReporteFacturas("01/06/2010", "30/06/2010")
  7.  
  8.    
  9.     End Sub
  10.  
  11.  

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Reportes en vb.net que usen web services
« Respuesta #8 en: Miércoles 30 de Junio de 2010, 17:04 »
0
como pudistes ver... puedes usar esta linea

crParameterDiscreteValue.Value  = textBox1.Text;


esa es la clave ... ese texbox puede ser una variable. puedes el dato que extraes de la base de datos... puede ser cualquier cosas que quieras. y luego sigues los otros pasos y lo metes dentro del Reporte. si hay mas de uno entonces lo que tienes que hacer es crear varios y eso es todo.


Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech