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:
Espero que puedan ayudarme, ya que hasta ahora no le encuentro la solución a este mi problema... 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
Mil gracias,