post icon

Crear Reportes con Visual Basic .Net, PostgreSQL y Crystal Report

La mayoría de las veces que trabajamos con Visual Basic .Net y Crystal Report, solemos conectarnos a SQL Server u Oracle como fuente de datos, debido a que tienen integración con el IDE de Visual Studio, para facilitar la creación de los mismos.

Cuando hablamos de  motores como PostgreSQL, MySQL, Firebird, Teradata y otros, no tenemos la integración del IDE con el servidor de base de datos, esto hace que no podamos crear tan sencillamente los reportes como los hacemos como con los otros motores, pero no lo hace imposible, sólo se debe seguir unos pasos distintos, que también sirve para los 2 primeros motores mencionados anteriormente.

Hoy haremos un ejemplo sencillo para mostrar un reporte con VB. Net y Crystal Report, haciendo la consulta de una tabla sencilla, devuelta desde el ResultSet de una función de PostgreSQL.

Creamos la BD con el siguiente Script:

1
2
3
4
5
CREATE DATABASE "DevTroce" WITH
  OWNER = "postgres"
  ENCODING = 'UTF8'
  TEMPLATE = "postgres"
  TABLESPACE = pg_default;

Con lo siguiente creariamos una tabla de usuarios por así decirlo a modo de ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE public."Usuarios" (
  "CodUsuario"   smallint NOT NULL PRIMARY KEY,
  "Nombres"      varchar(30) NOT NULL,
  "Apellidos"    varchar(30) NOT NULL,
  "WebFavorita"  varchar(30),
  "Telefono"     varchar(30)
) WITH (
    OIDS = FALSE
  )
  TABLESPACE pg_default;
 
CREATE INDEX "IX_Usuarios_Nombres_Apellidos"
  ON public."Usuarios"
  ("Nombres", "Apellidos");
 
ALTER TABLE public."Usuarios"
  OWNER TO postgres;
 
COMMENT ON TABLE public."Usuarios"
  IS 'Tabla de ejemplo para devtroce.com';

Aquí van los datos de ejemplos que usaré

1
2
3
4
5
6
7
INSERT INTO "Usuarios" ("CodUsuario", "Nombres", "Apellidos", "WebFavorita", "Telefono") VALUES
  (1, 'Javier', 'Sosa', 'www.devtroce.com', '476323'),
  (2, 'Mariela', 'Schum', 'www.facebook.com', '43083-0'),
  (3, 'Jose', 'Martinez', NULL, '4837612'),
  (4, 'Mirella', 'Troche', 'www.orkut.com', '865558'),
  (5, 'Josefina ', 'Mongelos', 'www.google.com', ''),
  (6, 'Mirna ', 'Rivas', 'www.devtroce.com', '4350098');

La función (Stored Procedure en otros motores) que nos alimentará el reporte va así:

1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE FUNCTION public."slc_usuarios"()
RETURNS SETOF public."Usuarios" AS
$$
select * from "Usuarios";
$$
LANGUAGE 'sql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER;
 
ALTER FUNCTION public."Slc_Usuarios"()
  OWNER TO postgres;

Ahora vamos a Visual Studio, creamos nuestro proyecto de Windows Form, agregamos una carpeta al proyecto llamada DataSet, dentro del cual agregaremos un Dataset o Conjunto de datos, así como muestra en la imagen, se llamará dsUsuarios.xsd

Una vez creado el dataset, en la superficie gris, hacemos click derecho -> Agregar -> DataTable. Al mismo le llamaremos dtUsuarios, sobre el cual volvemos a hacer click derecho –> Agregar -> Columna. Y vamos agregando uno a uno las columna que tendra la tabla igual a la BD, debemos recordar asignar correctamente los tipos de datos en las propiedades de las columnas del DataTable, quedaría así:

Lo siguiente es agregar la referencia de la .dll para conectarnos al PostgreSQL, lo haremos con el driver Npgsql, que es el proveedor de datos de PG para .net oficial de la comunidad. Este driver lo pueden descargar de aquí si no lo tienen.

Para agregarlo damos click derecho sobre el proyecto -> Agregar Referencia -> Examinar -> Seleccionamos estos archivos: Npgsql.dll, policy.2.0.Npgsql.dll, Mono.Security.dll, Aceptar.

Lo siguiente por hacer es agregar el Reporte de Crystal Report, para ello creamos una nueva carpeta llamada Reportes, y damos click derecho sobre ella -> Agregar -> Nuevo Elemento -> Crystal Reports. Cuando Aparezca el Wizard le asignamos reporte en blanco.

Una vez agregado y en el modo de diseño, sobre el explorador de campos, hacemos click derecho -> Asistente de Base de Datos -> Datos del Proyecto ->ADO.NET Datasets ->dtUsuarios, aquí elegimos nuestro dataset anteriormente creado, una vez hecho lo podremos ver en el explorador.

Una vez todo agregado al reporte quedaría así, deben entender que el diseño es minimalista sólo a modo de ejemplo, supongo que uds harán un diseño mucho mas bueno 😀

Nos queda por agregar el contenedor de Reportes, eso logramos creando un formulario nuevo, llamado frmContenedorDeReportes, y dentro de él arrastramos el objeto CrystalReportViewer, el cual puede llamarse crvVisorReporte.

Código que necesitamos escribir es el siguiente, todo irá dentro del formulario principal, donde tenemos el logo y el boton que se verán en la imágen final para que puedan copiarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Public Class frmPgReport
    'Declarar Objeto de Conexion
    Dim cnConexion As Npgsql.NpgsqlConnection
    'Objeto Comando
    Dim cmComando As Npgsql.NpgsqlCommand
    'Declarar Variable para almacenar String de Conexion a la BD
    Dim ConnString As New System.Text.StringBuilder("")
 
    'Construi la cadena de Conexion
    Private Sub CrearCadenaConexion()
        ConnString.Append("Host=;")
        ConnString.Append("Database=;")
        ConnString.Append("User ID=;")
        ConnString.Append("Password=;")
        ConnString.Append("Port=5432;")
        ConnString.Replace("", "127.0.0.1")
        ConnString.Replace("", "DevTroce")
        ConnString.Replace("", "postgres")
        ConnString.Replace("", "postgres")
    End Sub
 
    Private Sub CargarUsuarios()
        Try
            Me.Cursor = Cursors.WaitCursor
            'Armar la cadena
            CrearCadenaConexion()
            'Instanciar el objeto de conexion
            cnConexion = New Npgsql.NpgsqlConnection(Convert.ToString(ConnString))
            'instanciar comando
            cmComando = New Npgsql.NpgsqlCommand
            'asignar comando
            With cmComando
                .Connection = cnConexion
                'nombre de function a invocar
                .CommandText = "slc_usuarios"
                'determinar el tipo de comando
                .CommandType = CommandType.StoredProcedure
                'establezco timeout ilimitado xq estos querys tardar varios minutos en responder
                .CommandTimeout = 0
            End With
 
            'instancia del dataset .XSD -- en el namespace DataSet
            Using dsUsuarios As New dsUsuarios()
                'Instanciar DataAdapter y asignacion de objeto command
                Using daUsuarios As New Npgsql.NpgsqlDataAdapter() With {.SelectCommand = cmComando}
                    'Abrir la conexion a la BD
                    cnConexion.Open()
                    'Cargar Adaptador de datos
                    daUsuarios.Fill(dsUsuarios, "dtUsuarios")
                    'Instancia del Reporte -- namespace CrystalReport
                    Using rptUsuarios As New rptUsuarios()
                        'asignar dataset al reporte
                        rptUsuarios.SetDataSource(dsUsuarios)
                        'instancia del contenedor de reportes
                        Using frmContenedorDeReportes As New frmContenedorDeReportes()
                            'asignar reporte al contenedor
                            frmContenedorDeReportes.crvVisorReporte.ReportSource = rptUsuarios
                            'mostrar Reporte
                            frmContenedorDeReportes.ShowDialog()
                        End Using 'destruir contenedor
                    End Using 'destruir reporte
                End Using ' destruir dataadapter
            End Using 'destruir dataset
        Catch ex As Exception
            Throw ex
        Finally
            Me.Cursor = Cursors.Default
            'cerrar y destruir la conexion
            cnConexion.Close()
            cnConexion.Dispose()
        End Try
    End Sub 'end CargarUsuarios
 
    Private Sub btnUsuarios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUsuarios.Click
        Try
            CargarUsuarios()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class

La conexión a la BD pueden ver mejores maneras de hacerlo, ésta es sólo una y bastante corta para no abordar mucho ese tema.

Comentarios desde Facebook:

  1. avatar
    Yolani Internet Explorer Windows
    28 Abril 2013 at 14:20 #

    Hola primero que nada felicitarte por facilitarnos tan valiosa informacion, y a la vez ver si podrias aclararme algunas dudas estoy empezando con esto de los reportes y usando postgres y procedimientos almacenados, pero sigo al pie las instrucciones del tutorial y al pegar el codigo para el formulario me sale un error justamente en esta linea

    ‘Instancia del Reporte — namespace CrystalReport
    Using rptUsuarios As New rptUsuarios()

    me dice que rptUsuarios no esta definido.

    te agradeceria mucho si pudieras ayudarme muchas gracias.

  2. avatar
    jag Mozilla Firefox Windows
    10 Marzo 2013 at 23:57 #

    Hola buen ejemplo con una tabla alguien lo ha realizado con dos o mas tablas, seria bueno contar con ese ejemplo, he intentado realizar pero no me funciona. estoy iniciando en la utilizacion de POSTGRESQL

  3. avatar
    MasSoft PERU Google Chrome Windows
    13 Septiembre 2012 at 11:45 #

    Hola amigo mira ya hice tal como esta en el tuto que explicas que por cierto esta chida, pero mi problema radica en que yo utilizo vb 2010 ultimate y cuando deseo visualizar el reporte me sale el siguiente mensaje: No se puede cargar el archivo o ensamblado ‘file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll’ ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.

    y ahi no mas queda.
    por fa ayudaaa

  4. avatar
    Lus Borges DOMINICAN REPUBLIC Mozilla Firefox Windows
    3 Noviembre 2011 at 17:44 #

    Gracias por este material que me ha sido de mucha utilidad

  5. avatar
    viajeronet COLOMBIA Mozilla Firefox Windows
    2 Agosto 2011 at 17:23 #

    Muchas gracias por fin una luz de los reportes con CR – VB .Net y PG, necesito ayuda por favor, estoy programando con estas herramientas, ya realice mi data reader, conectandomen a posftgresql y creo un selec con varias tablas, como hago la previsualizacion y la impresion del reportes el codigo que utilizo es:

    para la conexion la funcion:
    Public Shared Function get_data_reader(ByVal csql As String) As NpgsqlDataReader
    ‘Este método, devuelve un Objeto DataReader
    Dim oconn As NpgsqlConnection
    Dim ocmd As NpgsqlCommand
    Dim odr As NpgsqlDataReader

    oconn = obtener_conexion()
    ocmd = obtener_comando(oconn)
    ocmd.CommandText = csql

    odr = ocmd.ExecuteReader(CommandBehavior.CloseConnection)
    Return odr
    End Function

    Para llebar el data reader
    csql = “select a.*, b.capacidad from ” + database.obtener_esquema + “.tb_programacion a ” _
    + “left join ” + database.obtener_esquema + “.tb_vehiculos b on a.placa = b.placa ”

    odr = database.get_data_reader(csql)

    Esto me funciona pero hasta ahy llego, estoy tratando de realizar la impresion con tu ejemplo, te agradeceria tu ayuda.

    Mil Gracias

  6. avatar
    javier MEXICO Internet Explorer Windows
    20 Junio 2011 at 10:09 #

    excelente trabajo. es lo que necesitaba. solo me queda una duda, como puedo por codigo modificar el valor de una etiqueta o formula que esta dentro de un reprote de crystal. para paramentros esto encontre y me funciona, pero al ser parametro y usar el drill me los vuelve a pedir entonces deseo simplemente pasarle el valor a una etiqueta o formula sencilla

    Dim parameterField As ParameterField
    parameterField = reporte.ParameterFields(“Parameter1”)
    parameterField.CurrentValues.AddValue(

    • avatar
      SubZero MEXICO Mozilla Firefox Windows
      20 Junio 2011 at 12:03 #

      Javier, por ejemplo, para modificar el Titulo del reporte puedes usar la siguiente linea:

      Report.SummaryInfo.ReportTitle = “Título del Reporte”

      o para modificar una formula:

      Report.RecordSelectionFormula = “{suministrados.nombre_entidad}=’Hidalgo'”

      Private Sub Test()
      Dim Report As New ReportDocument
      Dim LstrReporte As String, txt_generar As String

      LstrReporte = My.Application.Info.DirectoryPath
      LstrReporte = LstrReporte & “ReporteTest.rpt”

      txt_generar = “texto”
      Report.Load(LstrReporte)
      Report.SummaryInfo.ReportTitle = “Título del Reporte”
      Report.RecordSelectionFormula = “{suministrados.nombre_entidad}='” & txt_generar & “‘”
      CrystalReportViewer1.ShowGroupTreeButton = False
      CrystalReportViewer1.ReportSource = Report
      CrystalReportViewer1.Refresh()
      End Sub

      Nos cuentas como te fue.

      Videos de Crystal Reports y VS 2010

  7. avatar
    gaby PARAGUAY Mozilla Firefox Windows
    21 Mayo 2011 at 00:02 #

    el ejemplo me funciona bien, pero no se como hacer si utiliza varias tablas, creo que mi problema esta en el momento de llenar el dataset.

    • avatar
      Matheoz MEXICO Mozilla Firefox Windows
      24 Mayo 2011 at 17:29 #

      Puedes agregar varias tablas al DataSet, un ejemplo de como agregar una Tabla es con el código siguiente:

      dsUsuarios.Tables.Add(otroDataTable)

      otroDataTable es una tabla que ya esta creada, solo se agrega al DataSet.

      • avatar
        gaby PARAGUAY Mozilla Firefox Windows
        27 Mayo 2011 at 15:53 #

        ya cree todas las tablas, es en esta parte lo que no se que poner
        daINELEC.Fill(dsINELEC, “tipo_insumo”), ya que no es solo una tabla son varias

        • avatar
          Matheoz MEXICO Internet Explorer Windows
          27 Mayo 2011 at 16:49 #

          Prueba con una función similar a la siguiente:

          Public Function agregarTabla_Dataset(ByVal PsNomTabla As String) As Boolean
          Dim selectCMD As OleDbCommand, agregarTB_DA As OleDb.OleDbDataAdapter

          Try
          selectCMD = New OleDbCommand(“SELECT * FROM [” & PsNomTabla & “]”, objConn)
          agregarTB_DA = New OleDbDataAdapter
          agregarTB_DA.SelectCommand = selectCMD

          agregarTB_DA.Fill(dataSetGeneral, PsNomTabla)
          Catch ex As Exception
          Throw New Exception(“Error: (” & PsNomTabla & “). ” & ex.Message)
          Return False
          End Try

          Return True
          End Function

  8. avatar
    gaby PARAGUAY Mozilla Firefox Windows
    20 Mayo 2011 at 23:58 #

    el ejemplo me funciona bien, pero no se como hacer si utiliza varias tablas, creo que mi problema esta en el momento de llenar el dataset

  9. avatar
    Rossana Mereles PARAGUAY Google Chrome Windows
    12 Mayo 2011 at 21:23 #

    Y como hago cuando deseo pasarle parametros desde visual.????? me podrian facilitar un claro ejemplo por favor se los agradeceria..

    • avatar
      GeekZero PARAGUAY Google Chrome Windows
      12 Mayo 2011 at 22:39 #

      Hola Rossana! que bueno ver a una paraguaya 😀 Feliz Bicentenario!!

      Si usarás una función como esta:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      CREATE OR REPLACE FUNCTION slc_usuarios("Codigo" smallint)
        RETURNS SETOF "Usuarios" AS
      $BODY$
      select * from "Usuarios" where "CodUsuario" = $1;
      $BODY$
        LANGUAGE sql VOLATILE
        COST 100
        ROWS 1000;
      ALTER FUNCTION slc_usuarios(smallint) OWNER TO postgres;

      Que recibe como parametro de entrada el codigo del usuario, podés enviarle desde VB lo siguiente:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      'asignar comando
      With cmComando
      	.Connection = cnConexion
      	'nombre de function a invocar
      	.CommandText = "slc_usuarios"
      	'determinar el tipo de comando
      	.CommandType = CommandType.StoredProcedure
      	'establezco timeout ilimitado xq estos querys tardar varios minutos en responder
      	.CommandTimeout = 0
      	'ESTE SERIA EL CODIGO QUE AGREGARIAS
      	.Parameters.Add("Codigo", Convert.ToInt16(2))
      End With

      Con pasarle parametros desde alguna pantalla de tu sistema a los query’s de la bd ya lo resolverias..

      • avatar
        Rossana Mereles PARAGUAY Mozilla Firefox Windows
        20 Mayo 2011 at 13:51 #

        Muchas gracias por tu ayuda! voy a probar..
        Otra consulta, como sería cuando quiero mostrar en el reporte un dato que está en un texbox del formulario? Ej. Quiero mostrar el usuario que actualmente va a imprimir el reporte, tengo ese dato pero como le paso directo al reporte?.
        Saludos
        Rossana

  10. avatar
    Matheoz MEXICO Mozilla Firefox Windows
    2 Mayo 2011 at 14:49 #

    El tutorial esta muy bueno, y eso de los DataSet mejor.

    En la siguiente liga encontre algunos videos de como crear reportes usando Crystal Reports y Visual Studio 2010.

    La BD esta en Access, pero puede servir para aquellos que empiezan a utilizar CR. Algo basico espero que sean utiles.

    • avatar
      Matheoz MEXICO Mozilla Firefox Windows
      18 Mayo 2011 at 14:44 #

      Esta es la liga:

      Vayan a la carpeta Publico\CrystalReports

  11. avatar
    Marcus PARAGUAY Internet Explorer Windows
    1 Julio 2010 at 06:42 #

    @william Crystal Report para visual studio 2010, esta en beta la version integrada, no asi la separada, puedes usarlo por separado o descargar gratuitamente la beta desde aqui http://www.businessobjects.com/jump/xi/crvs2010/d

  12. avatar
    williams BOLIVIA Google Chrome Windows
    1 Julio 2010 at 05:27 #

    Hola esta bueno el tutorial pero el problema q tengo es q indican q apartir de la version 2010 de Visual Studio Crystal Report no viene adjunto y q se tiene q descargarlo por separado e hize eso pero no puedo integrarlo con Visual Studio no se si alguien tiene algun link o guia donde puedo consultar para integrar Crystal Report en Visual Studio 2010.

    saludos y gracias

  13. avatar
    @m@nd@ MEXICO Internet Explorer Windows
    12 Junio 2010 at 07:06 #

    hola!!

    un grupo de compañeros y yo estamos realizando un sistema que lea la huella digital en un scanner el problema es tiene que llevar reportes y

    de eso la verdad no entendemos nada.

    no se si me podrian ayudar con el codigo….

    xfisssss!!

    gracias

    • avatar
      GeekZero Google Chrome Windows
      12 Junio 2010 at 07:24 #

      Hola @m@nd@, personalmente he trabajado con productos de NeuroTechnology para manipular huellas digitales, específicamente con Verifinger, puedes encontrar su producto aquí: http://www.neurotechnology.com/verifinger.html Puedes probar con ellos..

      Se más especifica por favor, en que necesitas ayuda? en mostrar un reporte? en capturar la huella? en otra cosa?

  14. avatar
    heruvy ARGENTINA Internet Explorer Windows
    22 Mayo 2010 at 03:37 #

    Muy bueno GeekZero, pero tengo un problema.

    Yo estoy desarrollando sobre vb.net 2005 y lo tengo subido a un hosting alquilado, luego de errores diversos por que no tenian subidas las dll del crystal (y ponerlas en el bin) me encuento con el siguiente error:

    "An error has occurred while attempting to load the Crystal Reports runtime."

    "Either the Crystal Reports registry key permissions are insufficient or the Crystal Reports runtime is not installed correctly."

    "Please install the appropriate Crystal Reports redistributable (CRRedist*.msi) containing the correct version of the Crystal Reports runtime (x86, x64, or Itanium) required. Please go to http://www.businessobjects.com/support for more information. "

    Y segun lo que lei en los foros, hay que instalar el *.msi en el servidor (dado que esta alquilado, no me dan esa autorizacion).

    Es asi?.

    Hay alguna solucion para poder usar el CR?. Yo lo implemente con el VB4/5/6 y ahora estoy probando con el report viewer y no es lo mismo.

    Gracias.

    • avatar
      GeekZero PARAGUAY Google Chrome Windows
      22 Mayo 2010 at 05:43 #

      Hola Heruvy, definitivamente necesitas el runtime, de aquí los puedes descargar los .msi para la versión y arquitectura que estes usando: CRRedist

      Con respecto a tu hosting, si tienes permisos de instalación nomás podrías hacerlo, es un hosting virtualizado donde tiene todo el acceso o el modo tradicional nada mas? En todo caso puedes ponerte en contacto con tu hosting para que te instalen los paquetes que te faltan, los cuales inicialmente no deberían tener costo ya que los runtimes son gratuitos..

  15. avatar
    Viktor PERU Internet Explorer Windows
    18 Mayo 2010 at 18:29 #

    help

    estoy desarrollando un sys en web desde C# con sql y desplegando en apache tomcat sobre WXP

    y no he tenido mayor inconveninte hasta llgad alos reportes en Crystal Reports me sale el siguiente mensaje :

    Error 7 The return type 'CrystalDecisions.Web.CrystalReportViewer' of the method 'CrystalDecisions.Web.CrystalReportViewer ASP.rpt_webform1_aspx::__BuildControlCrystalReportViewer()' is not supported. c:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Filesweba65ff6e75678ef49App_Web_vgtcypxt.0.cs 16707566 1 Web

    y no puedo incluir el reporte en la solucion

    PF ayudaaaaaaaaaaaaaaaaaaaaaaaaaaaa

  16. avatar
    GeekZero PARAGUAY Google Chrome Windows
    19 Abril 2010 at 14:13 #

    Hola nuevamente Ozkar911, te he respondido en tu comentario anterior, lo hare mas detallado esta vez, si lo anterior no te ha cerrado del todo.

    En el ejemplo que he puesto arriba si te fijas, el reporte se alimenta de un procedimiento almacenado, o mejor llamado en postgreSQL: una funcion con el nombre slc_usuarios().

    Si te fijas bien esa funcion dentro tiene una instruccion SQL:

    <pre lang="plsql">Select * from usuarios;</pre>

    y devuelve todos lo registros de esa tabla. Luego la aplicacion mapea sus campos tal cual la funcion, por ende tal cual la tabla.

    Si desea puedes cambiar el query SQL de la funcion, por ejemplo asi:

    <pre lang="plsql">Select tabla1.Campo1, tabla1.Campo2, tabla2.Campo3, tabla2.Campo4 from tabla1 join tabla2 on tabla1.Campo1 = tabla2.Campo1</pre>

    Asi tendras varias columnas de varias tablas, y luego el DataTable del VB lo mapeas segun la cantidad y tipos de datos que devuelve tu nueva funcion.

    Finalmente organizas tu reporte con el nuevo DataTable que acabas de mapear.

    Se comprende mejor ahora? avisame que tal te va y si dudas algo, simplemente vuelve a preguntar, que no es molestia alguna compartir.

  17. avatar
    Ozkar911 EL SALVADOR Google Chrome Windows
    19 Abril 2010 at 12:57 #

    Muy buen ejemplo, Gracias!..

    Pero si quisiera mostrar un reporte que contenga datos de varias tablas ?

  18. avatar
    Ozkar911 EL SALVADOR Google Chrome Windows
    19 Abril 2010 at 12:12 #

    Muy buen ejemplo, gracias..

    Pero, si quiero mostrar un reporte que contenga datos de varias tablas relacionadas que debo hacer??

    • avatar
      GeekZero PARAGUAY Google Chrome Windows
      19 Abril 2010 at 12:43 #

      Eso es relativamente sencillo Ozkar911, inicialmente tienes 2 maneras de hacerlo:

      Dentro del DataSet puedes crear varios DataTable que se relacionen entre si.

      La opcion que mas me gusta, puedes crear un Procedimiento Almacenado que devuelva los valores que necesitas con los JOIN correspondientes en el SELECT SQL, y el mapeo del DataTable lo haces de acuerdo a tu SP en vez de la tabla.

      <div>Comentanos que tal te ha ido :D</div>

      • avatar
        CARMEN Mozilla Firefox Windows
        4 Abril 2011 at 14:20 #

        HOLA, DESDE TU COMENTARIO YA PASO MUCHO TIEMPO PERO TENGO UNA DUDA, COMO HAGO EL MAPEO DE MI LOS DATATABLE

        • avatar
          GeekZero PARAGUAY Google Chrome Windows
          4 Abril 2011 at 21:09 #

          Carmen, no esta completo tu mensaje, podrías volver a escribirlo?

  19. avatar
    pau SPAIN Internet Explorer Windows
    26 Febrero 2010 at 16:08 #

    como se hace eso de mantenimiento????

  20. avatar
    GeekZero PARAGUAY Google Chrome Windows
    26 Febrero 2010 at 15:49 #

    El express tambien trae normalmente el CR Express.. si no lo ven vayan a panel de control –> Agregar o quitar programas –> buscar Visual Studio –> y seleccionar el modo mantenimiento para agregar las nuevas funciones..

  21. avatar
    pau SPAIN Internet Explorer Windows
    26 Febrero 2010 at 15:46 #

    ami tampoco me aparece, aunque la verdad solo tengo instalado el visual basic 2008 express y no se que tengo que hacer para eliminarlo y descargarme el visual studio que parece ser si tiene lo del reporte y crystal

  22. avatar
    GeekZero PARAGUAY Google Chrome Windows
    18 Febrero 2010 at 02:31 #

    Fijate si estabas en la seccion "Reporting" en la zona izquierda. Si aun asi no aparece es porque cuando hiciste la instalacion del Visual Studio, no seleccionaste instalar el Crystal, lo mas seguro es que lo solucionarias cargando tu disco de instalación de nuevo, y seleccionar mantenimiento –> agregar nuevas caracteristicas –> ahi buscas el reporteado y listo.. sin con eso no funciona pasame mas detalles y vermos que hacer..

  23. avatar
    nena MEXICO Mozilla Firefox Windows
    17 Febrero 2010 at 23:25 #

    Hola oye esta super tu ejemplo, mi problema es que no me aparece la plantilla de crystal report y no se por que?, espero que puedas ayudarme en ese aspecto 🙂

Trackbacks/Pingbacks

  1. Como crear reportes con Crystal Reports en ASP.Net y SQL Server | DevTroce.com WordPress - 2 Noviembre 2010

    […] pocos hemos visto como crear reportes con Reporting Services y como hacerlo con Crystal Reports en WinForms, pero hoy veremos como crear un simple reporte con Crystal Reports y mostrarlo con ASP.Net […]

Responder