ASP.NET - problema al imprimir con aplicacion asp.net

   
Vista:

problema al imprimir con aplicacion asp.net

Publicado por cristian vicencio (2 intervenciones) el 08/07/2010 00:06:17
Buenas,
he desarrollado un aplicacion para imprimir algunos datos, estos datos son sacados de una base de datos sql server, al recuperar los datos no hay problema, el problema se me genera al querer imprimirlos, la aplicacion esta en un servidor windows 2000, y estoy tratando de imprimir desde otro equipo, que esta en red con el servidor, esta compartida la impresora y agregada en el servidor, pero aun asi este es el erro que me arroja:

Server Error in '/EtiquetasRx' Application.
--------------------------------------------------------------------------------

Access is denied
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ComponentModel.Win32Exception: Access is denied

Source Error:

Line 215: While cant_imp_placas > 0
Line 216: 'Response.Write("11111111111111111111111")
Line 217: imprimePlaca.Print()
Line 218: 'Response.Write("11111111111111111111112")
Line 219: 'Response.End()

Source File: C:\Inetpub\wwwroot\EtiquetasRx\Default.aspx.vb Line: 217

Stack Trace:

[Win32Exception (0x80004005): Access is denied]
System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e) +141
System.Drawing.Printing.PrintController.Print(PrintDocument document) +128
System.Drawing.Printing.PrintDocument.Print() +22
EtiquetasRx.WebForm1.btImprimir_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\EtiquetasRx\Default.aspx.vb:217
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292

Si me pueden 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
Imágen de perfil de roger

RE:problema al imprimir con aplicacion asp.net

Publicado por roger (311 intervenciones) el 08/07/2010 03:12:39
No entiendo bien como estas haciendo el proceso de impresion, lo que te puedo decir es que no puedes usar alguna tecnica de impresion que sea propia de windows forms, pues la arquitectura de una aplicacion web es distinta y no te va a permitir hacer la impresion de este modo. Mira este post que de pronto te aclara algunas dudas

http://social.msdn.microsoft.com/Forums/es-ES/dcees/thread/ab61e3b9-10a9-4417-88fd-0ed76045f069
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:problema al imprimir con aplicacion asp.net

Publicado por cristian (2 intervenciones) el 08/07/2010 15:42:30
Esta es la clase donde se imprime dentro del evento click de un boton que se llama btImprimir y la variable ("Impresora") tiene el nombre de mi empresora que esta en red, la variable impresora esta configurada en el webconfig

<appSettings>
<add key="Impresora" value="\\192.168.0.85\codbar"/>
</appSettings>

Public Class WebForm1

Private Sub btImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btImprimir.Click
Dim imprimePlaca As New PrintDocument
AddHandler imprimePlaca.PrintPage, AddressOf imprime_Placa
Dim imprimeSobre As New PrintDocument
AddHandler imprimeSobre.PrintPage, AddressOf imprime_Sobre

imprimePlaca.PrinterSettings.PrinterName = Application("Impresora")
imprimeSobre.PrinterSettings.PrinterName = Application("Impresora")

'imprimePlaca.DefaultPageSettings.Margins.Left = 0
'imprimePlaca.DefaultPageSettings.Margins.Top = 0

Dim strtexto As String = txtObservacion.Text
Dim intTexto As Integer = strtexto.Length
Dim intDiferencia As Integer

cant_imp_placas = txtCantidadPlaca.Text
cant_imp_sobre = txtCantidadSobre.Text

If Not (IsNumeric(txtCantidadPlaca.Text)) Then
MsgBox("Ingrese solo numeros", MsgBoxStyle.SystemModal)
'txtCantidadPlaca.Focus()
Exit Sub
ElseIf Not (IsNumeric(txtCantidadSobre.Text)) Then
MsgBox("Ingrese solo numeros", MsgBoxStyle.SystemModal)
'txtCantidadSobre.Focus()
Exit Sub
End If

If chkPlaca.Checked = True And chkSobre.Checked = True Then
If (lblRut.Text = "") Then

Else

If (intTexto <= 38) Then
linea1 = strtexto.Substring(0, strtexto.Length)
ElseIf (intTexto > 38 And intTexto <= 76) Then
linea1 = strtexto.Substring(0, 38)
intDiferencia = strtexto.Length - linea1.Length
linea2 = strtexto.Substring(38, intDiferencia)
ElseIf (intTexto > 76 And intTexto <= 108) Then
linea1 = strtexto.Substring(0, 38)
intDiferencia = strtexto.Length - linea1.Length
linea2 = strtexto.Substring(39, (strtexto.Length - intDiferencia) - 1)
linea3 = strtexto.Substring(76, (strtexto.Length - (linea1.Length + linea2.Length)) - 1)
End If

While cant_imp_placas > 0
'Response.Write("11111111111111111111111")
imprimePlaca.Print()
'Response.Write("11111111111111111111112")
'Response.End()
cant_imp_placas = cant_imp_placas - 1
End While
End If
End If
End Sub
End Class

espero que me puedas entender un poco mejor, gracias de todas maneras...
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
Imágen de perfil de roger

RE:problema al imprimir con aplicacion asp.net

Publicado por roger (311 intervenciones) el 08/07/2010 19:07:45
ok, entonces se confirma lo que dije anteriormente, el objeto printdocument se trabaja para windows forms. Es como si por ejemplo trataras de usar un MessageBox.Show en tu aplicacion web, no funcionaría a menos que estuvieras en el servidor, cuando ingrese un usuario, no verá el mensaje, porque este se visualizará en el servidor. Esto porque trabaja en el servidor consumiendo sus recursos, no los recursos del cliente; el servidor solo procesa y nos muestra la informacion en html (y otros mas).

Entonces por lo que veo tendras problemas tanto con lo de reportes como con los msgbox que tienes.
Para msgbox la solucion simple es el metodo alert de javascript ( que javascript si trabaja en el cliente, y no en el servidor).
Para los reportes hay varias opciones, como Reporting Services, o Crystal reports, que ya proveen esa funcionalidad de impresion.

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