Visual Basic.NET - Imprimir desde un datagrid

 
Vista:

Imprimir desde un datagrid

Publicado por Laura (8 intervenciones) el 18/06/2004 11:59:29
Hola!
Necesito imprimir el contenido de un datagrid y, como he visto en anteriores mensajes de este foro, para ello necesito crear un informe, pero no sé cómo crear un informe con el contenido de mi datagrid, ¿alguien me puede ayudar?
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Imprimir desde un datagrid

Publicado por Laura (8 intervenciones) el 18/06/2004 12:51:08
hola de nuevo!
He conseguido crear un informe con el crystal reports que
trae instalado vb.net. No sé si lo he hecho bien, he
agregado un nuevo elemento al proyecto y siguiendo su
asistente he elegido la opcion "Estandar" y a conexion a
mi bd sql, he elegido los campos y todo lo demás.
El caso es que, ahora al darle a imprimir, me dice que no
encuentra el fichero "CrystalReports.rpt" y lo tengo
agregado al proyecto, ¿cómo tengo que hacer la llamada
para que me imprima ese informe? El proyecto no se encuentra en mi propio equipo, accedo a el a través de una LAN. ¿he hecho algo mal al
crear el informe?

Gracias de nuevo.
Un saludo

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 15:11:29
Hola

Como el proyecto no se encuentra en tu equipo sino en la red LAN, de seguro el problema que tienes es que trata de buscar el reporte localmente, por lo que debes indicarle al proyecto que el reporte está en red y darle la direccion correspondiente, de tal manera que busque el reporte en el lugar que le corresponde

Claro está que debes permitir el acceso a la carpeta donde está el reporte.

Otra opción es que copies los reportes localmente en tu máquina, de tal manera que busque el reporte en tu equipo, como seguramente está haciendo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 15:11:40
Hola

Como el proyecto no se encuentra en tu equipo sino en la red LAN, de seguro el problema que tienes es que trata de buscar el reporte localmente, por lo que debes indicarle al proyecto que el reporte está en red y darle la direccion correspondiente, de tal manera que busque el reporte en el lugar que le corresponde

Claro está que debes permitir el acceso a la carpeta donde está el reporte.

Otra opción es que copies los reportes localmente en tu máquina, de tal manera que busque el reporte en tu equipo, como seguramente está haciendo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Laura (2 intervenciones) el 18/06/2004 17:25:12
Hola Edgar!
He puesto la ruta completa al servidor y me ha salido el siguiente error:
\"No hay ninguna aplicación asociada con el archivo especificado para esta operación.\"
¿qué se me olvida? Es la primera vez que uso el Crystal Report, no sé quizás deba llamarlo de alguna forma, en fin, el código que utilizo para imprimir es el siguiente:

Dim Imprimir As New System.Diagnostics.ProcessStartInfo
Imprimir .UseShellExecute = True
Imprimir .Verb = \"print\"
Imprimir .WindowStyle = ProcessWindowStyle.Hidden
Imprimir .ErrorDialog = False
Imprimir.FileName = \"\\\\ruta a mi servidor\\informe.rpt\"

Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(Imprimir)

p.WaitForInputIdle()

¿Está bien? ¿me falta algo? Ese es el código que se ejecuta al pulsar el botón imprimir.

Gracias por tu ayuda.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 17:39:03
Hola

Realmente no necesitas crear un nuevo proceso para inmprimir un reporte... el Visual Studio .NET trae una clase llamada ReportDocument, al cual le asocias el RPT del reporte. Esta clase tiene un método PrintToPrinter que te permite imprimir el reporte.

En fin, lo que debes hacer es agregar un objeto ReportDocument (está en la pestaña de componentes si no me equivoco), le asocias el reporte y lo mandas a imprimir con el método que te mencioné anteriormente

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Laura (2 intervenciones) el 18/06/2004 17:50:26
Hola Edgar!
He hecho lo que me has dicho y obtengo el siguiente error: \"No es posible conectar\" y la impresora funciona perfectamente.
De todos modos el método PrintToPrinter me pide varios campos y entre ellos el nº de la última página que voy a imprimir y éste puede que hoy sea 2, otro día 3, cómo lo pongo si no sé cuántas páginas voy a imprimir?
Muchas gracias por tu ayuda.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 17:56:59
Hola

Bueno.. hay que ver ese error detenidamente... en cuanto a tu duda sobre la última página, si coloca 0, te imprime todo.. de todas maneras, aqui tienes un ejemplo, donde especificas los margenes e imprimes

Private Sub PrintReport(ByVal printerName As String)
Dim margins As PageMargins

' Get the PageMargins structure and set the
' margins for the report.
margins = Report.PrintOptions.PageMargins
margins.bottomMargin = 350
margins.leftMargin = 350
margins.rightMargin = 350
margins.topMargin = 350
' Apply the page margins.
Report.PrintOptions.ApplyPageMargins(margins)

' Select the printer.
Report.PrintOptions.PrinterName = printerName

' Print the report. Set the startPageN and endPageN
' parameters to 0 to print all pages.
Report.PrintToPrinter(1, False, 0, 0)
End Sub

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Laura (2 intervenciones) el 18/06/2004 18:25:42
Gracias por tu ayuda Edgar.
El error me da al imprimir el informe:

crystalReport1.PrintToPrinter(1, False, 0, 0)

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 18:34:35
Hola

Bueno.. la pregunta sería si el reporte lo logra imprimir o no, pareciera que no existe impresora por defecto o algo parecido...

En caso de que no imprima, intenta utilizar la propiedad PrintOptions para configurar la impresora

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Laura (1 intervención) el 18/06/2004 18:46:09
Hola Edgar!
El reporte no lo imprime.
Tengo la impresora configurada como predeterminada y, el caso es que al hacer:

Dim impresora As New Printing.PageSettings
MsgBox(impresora.PrinterSettings.PrinterName())

Obtengo el nombre correcto de la impresora.
Pero el error me sigue saliendo.

¿se te ocurre algo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 18:51:30
Hola

Posiblemente el error no es de la impresora sino del reporte, ya que no logra acceder a la ubicación del mismo. Deberias intentar visualizar el reporte como una presentación preliminar, esto lo haces con el control CrystalReportViewer, agrega uno en un formulario e intenta ejecutarlo para visualizar el reporte. Hay una propiedad en este control (no recuerdo cual es) que te permite asignar la fuente del reporte.

Si te lo logra mostrar, el problema es de la impresora. Si te da un error similar al que tienes ahora, entonces el problema es efectivamente que no logra ubicar el reporte, y por lo tanto no lo podrás imprimir.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Laura (2 intervenciones) el 18/06/2004 19:18:39
Hola de nuevo Edgar!
Al cargar el Crystal Report Viewer me sale el siguiente error en tiempo de ejecución:
El
tema es que al cargar el formulario, en vez de mostrarme el informe me
aparece el siguiente error:

\"Error de motor de consulta
\'C:\\ Temp\\...\\ [un montón de nºs] .rpt\'\"

Cargo el Crystal Report así:

Dim objetoDS As New DataSet(\"MiTabla\")
Dim informe As New CrystalReport1
informe.SetDataSource(objetoDS)
CrystalReportViewer.ReportSource = informe

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Edgar (1501 intervenciones) el 18/06/2004 19:27:10
Hola

Si es así, entonces el problema es que no consigue el reporte... debes verificar que la ubicación de la red sea la correcta, y en caso de que te siga fallando, intenta copiar el reporte en una carpeta local, para ver si lo logra ubicar asi

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir desde un datagrid

Publicado por Laura (1 intervención) el 21/06/2004 10:05:42
Hola Edgar!
He conseguido imprimir mi reporte, no sé qué pasaba, el caso es que borré todo, empecé desde el principio, creando el reporte y cargándolo y funcionó, :-)
Seguro que se me pasó algo por alto la primera vez.
De todos modos, muchísimas gracias por tu ayuda, me ha servido de mucho.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar