Hola Amigos:
Tengo un problema que sé, podrán ayudarme a solucionarlo.
Tengo un reporte "Prueba.rpt", hecho en Crystal Report que lo envío directamente a la impresora usando el comando PrintToPrinter. Hasta ahí no tengo ningún problema.
Luego le adicioné un parámetro que se llama Titulo1, con la intención de usarlo allí dentro del reporte. Obviamente, hago el envio respectivo de su valor, antes de enviar a impresora. Usando el comando:
NombreReporte.SetParameterValue("Titulo1", "REPORTE GENERAL DE CAJA")
Pero bueno, ahora explico mi problema....
Cuando NO USO el parámetro en el reporte, sin ningún problema se imprime en Impresora, con:
NombreReporte.PrintToPrinter(1, False, 1, 1)
Pero cuando el parámetro lo USO dentro del reporte, colocándolo como un objeto de impresión o como parte de una fórmula, entonces ahí si me da un error, y me dice: "Faltan valores de parámetros", y sin enbargo tengo todo en orden.
Lo más extraño de todo es que cuando lo envío al CrystalReportViewer no sale ningún error, sólo da problemas cuando uso el PrintToPrinter.
El código que estoy utilizando es el siguiente:
Código:
Protected Sub MyMaster_ImpresoraClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyMaster.Impresoraclick
Try
Dim DivisasMovimientosCajas As New clsDivisasMovimientosCajas
Dim strConsultaSQL As String = DivisasMovimientosCajas.ObtenerReporteMovimientoGeneralCajasResumenTransacciones(Session("glbusrCodigo"), _
IIf(Me.cmbFiltroCentros.SelectedValue.Trim.Length = 0, Nothing, Me.cmbFiltroCentros.SelectedValue), _
IIf(Me.cmbFiltroCajas.SelectedValue.Trim.Length = 0, Nothing, Me.cmbFiltroCajas.SelectedValue), _
IIf(Me.txtFechaInicial.Text.Trim.Length = 0, Nothing, Me.txtFechaInicial.Text), _
IIf(Me.txtFechaFinal.Text.Trim.Length = 0, Nothing, Me.txtFechaFinal.Text))
Dim NombreReporte As New CrystalDecisions.CrystalReports.Engine.ReportClass
NombreReporte = New Pruebas
Dim dsDatos As New EDTReportes
' Borra datos de las tablas del DataSets en caso de que esten llenas.
Dim intNroTabla As Integer
For intNroTabla = 0 To dsDatos.Tables.Count - 1
If dsDatos.Tables(intNroTabla).Rows.Count() > 0 Then
dsDatos.Tables(intNroTabla).Rows.Clear()
End If
Next
intNroTabla = Nothing
cnx.CrearComando(strConsultaSQL)
Dim da As New SqlClient.SqlDataAdapter(strConsultaSQL, cnx._Conexion)
Dim strNombreTabla As String = "MovimientoGeneralCajasResumenTransacciones"
da.Fill(dsDatos, strNombreTabla)
cnx.CerrarConexion()
cnx = Nothing
If dsDatos.Tables(strNombreTabla).Rows.Count > 0 Then
NombreReporte.SetParameterValue("Titulo1", "PRUEBA")
NombreReporte.SetDataSource(dsDatos)
NombreReporte.PrintToPrinter(1, False, 1, 1)
End If
Catch ex As Exception
MyMaster.MensajeNormal(ex.Message)
End Try
End Sub
Espero que puedan ayudarme, ya que hasta ahora no le encuentro la solución a este mi problema...
Mil gracias,