none
¿Como se pasan valores o datos por parámetros en SQL para generar un reporte en crystalreports a partir de un dato escrito en un textbox? RRS feed

  • Pregunta

  • Estoy tratando de generar un reporte con crystalreports pasandole datos a través de visual basic desde un textbox.

    Este es el código sql que tengo en el crystalreport:

    SELECT
        Autos.`cod_auto`, Autos.`descripcion`, Autos.`marca`, Autos.`modelo`, Autos.`EdoAuto`
    FROM
        `Autos` Autos
    WHERE
        `marca` = '" & txtmarcaauto.Text & "' and `modelo`= '" & txtmodeloauto.Text & "' and `EdoAuto` = 'DISPONIBLE'
    ORDER BY
        Autos.`cod_auto` ASC

    generalmente si lo fuese colocado en el formulario si funciona, pero como está es desde el crystalreport no me muestra ningun informe, si le borro la condicion w¡marca y modelo y solo dejo el EDOAUTO me busca los disponibles y funciona perfectamente. El problema esta es en que creo que no pasan los parámetros como debe ser.

    tambien tebo hacer un reporte parecido pero colocando un monto y buscar los precios mayores a partir de ese monto escrito en la casilla de texto, si me ayudan con este será facil para mi hacer el otro, supongo que debe ser parecido. Espero su ayuda gracias.

    Soy nuevo en el foro y programando saludos!

    domingo, 10 de marzo de 2013 19:25

Respuestas

  • Hola vxyustiz

    Yo paso los parámetros en vb6 de esta manera

    Option Explicit Private crApp As New CRAXDRT.APPLICATION Private crReport As New CRAXDRT.Report Private mflgContinuar As Boolean Private mstrParametro1 As String Private mstrParametro2 As String Private Sub Form_Activate() If Not mflgContinuar Then Unload Me End Sub Private Sub Form_Load() Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions Dim crParamDef As CRAXDRT.ParameterFieldDefinition Dim SelectFormula As String On Error GoTo ErrHandler 'Abrir el reporte Screen.MousePointer = vbHourglass mflgContinuar = True Set crReport = crApp.OpenReport(App.Path & "\Reportes\Ingreso de Equipos.rpt", 1) Set crParamDefs = crReport.ParameterFields strSQL = "SELECT DISTINCT RecepcionEquipos.codRecEquipo, Clientes.cliNombre, RecepcionEquipos.fechaIngreso, Productos.proDescripcion, RecepcionEquipos.codEstRec, RecepcionEquipos.codUsu" strSQL = strSQL & " FROM (Clientes INNER JOIN RecepcionEquipos ON Clientes.cliCodigo = RecepcionEquipos.cliCodigo) INNER JOIN (Productos INNER JOIN DetalleRecepcionE ON Productos.proCodigo = DetalleRecepcionE.proCodigo) ON RecepcionEquipos.codRecEquipo = DetalleRecepcionE.codRecEquipo" strSQL = strSQL & " WHERE (((RecepcionEquipos.codEstRec) In ('S','G'))) AND RecepcionEquipos.fechaIngreso>=#" & mstrParametro1 & "# AND RecepcionEquipos.fechaIngreso<=#" & mstrParametro2 & "#" strSQL = strSQL & " ORDER BY RecepcionEquipos.codRecEquipo" crReport.SQLQueryString = strSQL For Each crParamDef In crParamDefs Select Case crParamDef.ParameterFieldName Case "Parametro1" crParamDef.AddCurrentValue (mstrParametro1) Case "Parametro2" crParamDef.AddCurrentValue (mstrParametro2) End Select Next CRViewer1.ReportSource = crReport CRViewer1.DisplayGroupTree = False CRViewer1.ViewReport Screen.MousePointer = vbDefault Set crParamDefs = Nothing Set crParamDef = Nothing Exit Sub ErrHandler: If Err.Number = -2147206461 Then MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _ vbCritical + vbOKOnly Else MsgBox Err.Description, vbCritical + vbOKOnly End If mflgContinuar = False Screen.MousePointer = vbDefault End Sub Private Sub Form_Resize() CRViewer1.Top = 0 CRViewer1.Left = 0 CRViewer1.Height = ScaleHeight CRViewer1.Width = ScaleWidth End Sub Public Sub PasarParametros(sParam1 As String, sParam2 As String) mstrParametro1 = sParam1 mstrParametro2 = sParam2 End Sub Private Sub Form_Unload(Cancel As Integer) Set crReport = Nothing

    Set crApp = Nothing End Sub

     

    El Guille


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    domingo, 10 de marzo de 2013 22:23

Todas las respuestas

  • Estoy usando visual basic 6 y una coneccion a base de datos de acces, trato de seguir paso a paso las guias que me pasaste pero no me salen algunas opciones, por tanto me impiden continuar D:
    domingo, 10 de marzo de 2013 21:54
  • Hola:

     Entonces te equivocaste de Foro este foro es sobre Vb.Net y tu lo mencionas deberas de hacer tu pregunta aqui:

    Lenguaje VB 5/6

     Ahí sin lugar a dudas recibirás una ayuda mas acertada sobre lo que deseas hacer y con ejemplos de la versión del lenguaje que estas manejando.

     Suerte!


    Saludos desde Monterrey, Nuevo León, México!!!

    domingo, 10 de marzo de 2013 22:10
  • Hola vxyustiz

    Yo paso los parámetros en vb6 de esta manera

    Option Explicit Private crApp As New CRAXDRT.APPLICATION Private crReport As New CRAXDRT.Report Private mflgContinuar As Boolean Private mstrParametro1 As String Private mstrParametro2 As String Private Sub Form_Activate() If Not mflgContinuar Then Unload Me End Sub Private Sub Form_Load() Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions Dim crParamDef As CRAXDRT.ParameterFieldDefinition Dim SelectFormula As String On Error GoTo ErrHandler 'Abrir el reporte Screen.MousePointer = vbHourglass mflgContinuar = True Set crReport = crApp.OpenReport(App.Path & "\Reportes\Ingreso de Equipos.rpt", 1) Set crParamDefs = crReport.ParameterFields strSQL = "SELECT DISTINCT RecepcionEquipos.codRecEquipo, Clientes.cliNombre, RecepcionEquipos.fechaIngreso, Productos.proDescripcion, RecepcionEquipos.codEstRec, RecepcionEquipos.codUsu" strSQL = strSQL & " FROM (Clientes INNER JOIN RecepcionEquipos ON Clientes.cliCodigo = RecepcionEquipos.cliCodigo) INNER JOIN (Productos INNER JOIN DetalleRecepcionE ON Productos.proCodigo = DetalleRecepcionE.proCodigo) ON RecepcionEquipos.codRecEquipo = DetalleRecepcionE.codRecEquipo" strSQL = strSQL & " WHERE (((RecepcionEquipos.codEstRec) In ('S','G'))) AND RecepcionEquipos.fechaIngreso>=#" & mstrParametro1 & "# AND RecepcionEquipos.fechaIngreso<=#" & mstrParametro2 & "#" strSQL = strSQL & " ORDER BY RecepcionEquipos.codRecEquipo" crReport.SQLQueryString = strSQL For Each crParamDef In crParamDefs Select Case crParamDef.ParameterFieldName Case "Parametro1" crParamDef.AddCurrentValue (mstrParametro1) Case "Parametro2" crParamDef.AddCurrentValue (mstrParametro2) End Select Next CRViewer1.ReportSource = crReport CRViewer1.DisplayGroupTree = False CRViewer1.ViewReport Screen.MousePointer = vbDefault Set crParamDefs = Nothing Set crParamDef = Nothing Exit Sub ErrHandler: If Err.Number = -2147206461 Then MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _ vbCritical + vbOKOnly Else MsgBox Err.Description, vbCritical + vbOKOnly End If mflgContinuar = False Screen.MousePointer = vbDefault End Sub Private Sub Form_Resize() CRViewer1.Top = 0 CRViewer1.Left = 0 CRViewer1.Height = ScaleHeight CRViewer1.Width = ScaleWidth End Sub Public Sub PasarParametros(sParam1 As String, sParam2 As String) mstrParametro1 = sParam1 mstrParametro2 = sParam2 End Sub Private Sub Form_Unload(Cancel As Integer) Set crReport = Nothing

    Set crApp = Nothing End Sub

     

    El Guille


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    domingo, 10 de marzo de 2013 22:23