Foros del Web » Programación para mayores de 30 ;) » .NET »

Imprimir reporte sin vista previa

Estas en el tema de Imprimir reporte sin vista previa en el foro de .NET en Foros del Web. He encontrado este código que lo da microsoft para imprimir un reporte .rdlc sin vista previa, pero por más vueltas que le doy no se ...
  #1 (permalink)  
Antiguo 11/09/2014, 10:44
 
Fecha de Ingreso: agosto-2014
Mensajes: 44
Antigüedad: 10 años, 3 meses
Puntos: 0
Imprimir reporte sin vista previa

He encontrado este código que lo da microsoft para imprimir un reporte .rdlc sin vista previa, pero por más vueltas que le doy no se hacerlo funcionar...
Este es el código:

Imports System
Imports System.IO
Imports System.Data
Imports System.Text
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Printing
Imports System.Collections.Generic
Imports System.Windows.Forms
Imports Microsoft.Reporting.WinForms

Public Class Demo
Implements IDisposable
Private m_currentPageIndex As Integer
Private m_streams As IList(Of Stream)

Private Function LoadSalesData() As DataTable
' Create a new DataSet and read sales data file
' data.xml into the first DataTable.
Dim dataSet As New DataSet()
dataSet.ReadXml("..\..\data.xml")
Return dataSet.Tables(0)
End Function

' Routine to provide to the report renderer, in order to
' save an image for each page of the report.
Private Function CreateStream(ByVal name As String, ByVal fileNameExtension As String, ByVal encoding As Encoding, ByVal mimeType As String, ByVal willSeek As Boolean) As Stream
Dim stream As Stream = New MemoryStream()
m_streams.Add(stream)
Return stream
End Function

' Export the given report as an EMF (Enhanced Metafile) file.
Private Sub Export(ByVal report As LocalReport)
Dim deviceInfo As String = "<DeviceInfo>" & _
"<OutputFormat>EMF</OutputFormat>" & _
"<PageWidth>8.5in</PageWidth>" & _
"<PageHeight>11in</PageHeight>" & _
"<MarginTop>0.25in</MarginTop>" & _
"<MarginLeft>0.25in</MarginLeft>" & _
"<MarginRight>0.25in</MarginRight>" & _
"<MarginBottom>0.25in</MarginBottom>" & _
"</DeviceInfo>"
Dim warnings As Warning()
m_streams = New List(Of Stream)()
report.Render("Image", deviceInfo, AddressOf CreateStream, warnings)
For Each stream As Stream In m_streams
stream.Position = 0
Next
End Sub

' Handler for PrintPageEvents
Private Sub PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim pageImage As New Metafile(m_streams(m_currentPageIndex))

' Adjust rectangular area with printer margins.
Dim adjustedRect As New Rectangle(ev.PageBounds.Left - CInt(ev.PageSettings.HardMarginX), _
ev.PageBounds.Top - CInt(ev.PageSettings.HardMarginY), _
ev.PageBounds.Width, _
ev.PageBounds.Height)

' Draw a white background for the report
ev.Graphics.FillRectangle(Brushes.White, adjustedRect)

' Draw the report content
ev.Graphics.DrawImage(pageImage, adjustedRect)

' Prepare for the next page. Make sure we haven't hit the end.
m_currentPageIndex += 1
ev.HasMorePages = (m_currentPageIndex < m_streams.Count)
End Sub

Private Sub Print()
If m_streams Is Nothing OrElse m_streams.Count = 0 Then
Throw New Exception("Error: no stream to print.")
End If
Dim printDoc As New PrintDocument()
If Not printDoc.PrinterSettings.IsValid Then
Throw New Exception("Error: cannot find the default printer.")
Else
AddHandler printDoc.PrintPage, AddressOf PrintPage
m_currentPageIndex = 0
printDoc.Print()
End If
End Sub

' Create a local report for Report.rdlc, load the data,
' export the report to an .emf file, and print it.
Private Sub Run()
Dim report As New LocalReport()
report.ReportPath = "..\..\Report.rdlc"
report.DataSources.Add(New ReportDataSource("Sales", LoadSalesData()))
Export(report)
Print()
End Sub

Public Sub Dispose() Implements IDisposable.Dispose
If m_streams IsNot Nothing Then
For Each stream As Stream In m_streams
stream.Close()
Next
m_streams = Nothing
End If
End Sub

Public Shared Sub Main(ByVal args As String())
Using demo As New Demo()
demo.Run()
End Using
End Sub
End Class

Si alguien me pudiera hechar una mano..se lo agradecería mil
  #2 (permalink)  
Antiguo 12/09/2014, 11:06
 
Fecha de Ingreso: agosto-2014
Mensajes: 44
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Imprimir reporte sin vista previa

No consigo imprimir el reporte ni sin vista previa ni de ninguna forma...
  #3 (permalink)  
Antiguo 19/09/2014, 01:05
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 22 años
Puntos: 37
Respuesta: Imprimir reporte sin vista previa

Los reportes q yo hago en .net, ya sea en Crystal Reports los genero como .pdf y luego con un shell de msdos los mando a impresion, a veces creo los pdfs con iTextSharp.
  #4 (permalink)  
Antiguo 19/09/2014, 03:23
 
Fecha de Ingreso: agosto-2014
Mensajes: 44
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Imprimir reporte sin vista previa

Al final si conseguí imprimir el reporte, pero se ve que algo en la conexion no hago bien, parece sencillo pero no se que puede faltarme o que hago mal...

Con esto imprimo directamente el reporte
Dim ImprimirReport As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent

'InitializeComponent()
'Donde esta el informe
ImprimirReport.Load("Ruta\informeCR.rpt")
'Propiedades de la impresion y nombre impresora
ImprimirReport.PrintToPrinter(1, False, 0, 0)
ImprimirReport.PrintOptions.PrinterName = imp

El problema es que el reporte solo me muestra el primer registro de la tabla, ahora mismo haciendo pruebas ya no me salen ni los registros de la tabla...Me salen como colores como si fuesen de ejemplo..(red, blue.....)

Etiquetas: previa, reporte, vista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.