Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Pq no sigue la eejcucion de código? (http://www.forosdelweb.com/f78/pq-no-sigue-eejcucion-codigo-573025/)

chascos69 06/04/2008 03:26

Pq no sigue la eejcucion de código?
 
Hola
Llevo 3 días con esto y no hay manera... a ver si sabési decirme pq. pasa y solucionarlo. Tengo un form que cobra por servicaixa y muestra un pdf con un report(active report) del cobro. De esta manera:

---------------------------
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If AltaRealizada Then
ImpresiónServiCaixa()

Me.Cobrar.Enabled = False
Me.imgLogo.Visible = True
Me.Button2.Text = "Cerrar sesión"
else:end if
End sub
-------------------------------
Private Sub ImpresiónServiCaixa()
Dim dt As New DataTable
Dim dr As DataRow
'Formato datatable listado
dt.Columns.Add("PeriodoPago", GetType(String))
dt.Columns.Add("Emisora", GetType(String))
dt.Columns.Add("NumeroReferencia", GetType(String))
dt.Columns.Add("Identificacion", GetType(String))
dt.Columns.Add("Importe", GetType(Decimal))
dt.Columns.Add("BarCode", GetType(String))
dt.Columns.Add("Nombre", GetType(String))
dt.Columns.Add("Direccion", GetType(String))
dt.Columns.Add("Poblacion", GetType(String))

dr = dt.NewRow
Dim sEmisora As String = "05645656"
Dim sSufijo As String = "566"
Dim sReferencia As String = "999" & Format(CInt(Me.numMACodMat.Value), "00000000")
Dim sIdentificacion As String = "645645"
Dim sImporte As String = Format((numMAPreMat.Value * 100), "0000000000")
Dim sParidad As String = "0"
'-----
'Cálculo 2 Dígitos de Control del Nºde Referencia
Dim Cálculo As Double = CDbl(sEmisora)
Cálculo += CDbl(sSufijo)
Cálculo += CDbl(sReferencia)
Cálculo += CDbl(sIdentificacion)
Cálculo += CDbl(sImporte)
Cálculo = (Cálculo / 97) - Int((Cálculo / 97))
Cálculo = Int(Cálculo * 100)
Cálculo = 100 - Cálculo
'-----
'Agregamos los 2 dígitos de control
sReferencia &= Format(Cálculo, "00")

dr("PeriodoPago") = "" 'Now
dr("Emisora") = sEmisora & sSufijo
dr("NumeroReferencia") = sReferencia
dr("Identificacion") = sIdentificacion
dr("Importe") = numMAPreMat.Value
dr("BarCode") = "6756757" & sEmisora & sSufijo & sReferencia & sIdentificacion & sImporte & sParidad
dr("Nombre") = "Nom: "
dr("Nombre") &= Trim(Me.txtMANomCog.Text)

dr("Direccion") = "Direccion"
dr("Poblacion") = "CP -- Población"
dt.Rows.Add(dr)

Dim r As New rptServiCaixa
r.DataSource = dt
Try
r.Run(False)
Catch eRunReport As DataDynamics.ActiveReports.ReportException
Response.Clear()
Response.Write("<h1>Error report:</h1>")
Response.Write(eRunReport.ToString())
Return
End Try

'Se borran las cabeceras actuales de HTTP
Response.ClearContent()
Response.ClearHeaders()

'Abrir en la misma ventana
'Response.AddHeader("content-disposition", "inline")

'Abrir en nueva ventana
Response.AddHeader("content-disposition", "attachment; filename=ServiCaixa.pdf")

Response.ContentType = "application/pdf"

Dim pdf As New PdfExport
Dim memStream As New System.IO.MemoryStream
pdf.Export(r.Document, memStream)
Response.BinaryWrite(memStream.ToArray())
Response.End()
End If
--------------------------------

Abre el pdf bien pero el código
Me.Cobrar.Enabled = False
Me.imgLogo.Visible = True
Me.Button2.Text = "Cerrar sesión"
no lo ejecuta y no se pq. SI le quito el Sub Servicaixa si lo hace así que debe ser algo en el Sub servicaixa que he de cambiar... pero el que? Lo de response.end lo probé de quitar pero nada

Gracias

Fann_Lavigne 07/04/2008 00:23

Re: Pq no sigue la eejcucion de código?
 
ya intentaste poniendo

Me.Cobrar.Enabled = False
Me.imgLogo.Visible = True
Me.Button2.Text = "Cerrar sesión"

anest de la llamada al otro sub?

chascos69 07/04/2008 00:49

Re: Pq no sigue la eejcucion de código?
 
si ya lo intenté

xknown 07/04/2008 08:46

Re: Pq no sigue la eejcucion de código?
 
Si quitas Response.End(); en realidad se ejecuta la porción de código que resta, pero de nada te va a servir eso, porque supuestamente tu método ServiCaixa envía un documento PDF al navegador y ya no la típica página que contiene tus controles y demás cosas.

Saludos

chascos69 07/04/2008 09:02

Re: Pq no sigue la eejcucion de código?
 
ya quite el response.end y pasa lo mismo... "de nada te va a servir eso, porque supuestamente tu método ServiCaixa envía un documento PDF al navegador"... cierto "y ya no la típica página que contiene tus controles y demás cosas."... ya pero eso no debería interrumpir la ejeccución de código de la primera página..no?

xknown 07/04/2008 10:01

Re: Pq no sigue la eejcucion de código?
 
Cita:

Iniciado por chascos69 (Mensaje 2353051)
ya quite el response.end y pasa lo mismo... "de nada te va a servir eso, porque supuestamente tu método ServiCaixa envía un documento PDF al navegador"... cierto "y ya no la típica página que contiene tus controles y demás cosas."... ya pero eso no debería interrumpir la ejeccución de código de la primera página..no?

¿Por qué no?

Vuelvo a repetir, si es otro documento el que envías al cliente, el código que intentas ejecutar no va a tener ningún efecto para esa petición en particular (puesto que ahí ya no existen los controles que has definido...). Por otro lado, no deberías quitar Response.End(), porque posiblemente el documento que descargues estará corrupto.

Te sugiero que hagas unas pruebas básicas para que entiendas como funcionan las cosas.

Saludos

chascos69 07/04/2008 11:43

Re: Pq no sigue la eejcucion de código?
 
Lo del response.end ok
"si es otro documento el que envías al cliente, ".. te refieres a la nueva ventana que se abre con el pdf para descargar?
"el código que intentas ejecutar no va a tener ningún efecto para esa petición en particular (puesto que ahí ya no existen los controles que has definido...). "...??? quieres decir que:
Me.Cobrar.Enabled = False
Me.imgLogo.Visible = True
Me.Button2.Text = "Cerrar sesión"
lo está intentando ejecutar en la nueva página del pdf? Y como lo hago para que lo ejecute en la original?

xknown 07/04/2008 13:28

Re: Pq no sigue la eejcucion de código?
 
Cita:

Iniciado por chascos69 (Mensaje 2353363)
Lo del response.end ok
"si es otro documento el que envías al cliente, ".. te refieres a la nueva ventana que se abre con el pdf para descargar?
"el código que intentas ejecutar no va a tener ningún efecto para esa petición en particular (puesto que ahí ya no existen los controles que has definido...). "...??? quieres decir que:
Me.Cobrar.Enabled = False
Me.imgLogo.Visible = True
Me.Button2.Text = "Cerrar sesión"
lo está intentando ejecutar en la nueva página del pdf?

Efectivamente.
Cita:

Y como lo hago para que lo ejecute en la original?
Lo que se me ocurre en este momento es que desde el manejador del evento Click de Boton2 generes un frame interno o abras una ventana nueva (window.open) que permita descargar el documento pedido. Ejm (en este caso el parámetro descargar indicaría que sólo se debe escribir los contenidos del pdf en la respuesta):

Código:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If AltaRealizada Then
ClientScript.RegisterClientScriptBlock(me.gettype(), "foo", "window.open('tupagina.aspx?descargar=1')", true)

Me.Cobrar.Enabled = False
Me.imgLogo.Visible = True
Me.Button2.Text = "Cerrar sesión"
else:end if
End sub

El código naturalemente no está probado, pero con algo parecido debería funcionar.

Saludos

chascos69 07/04/2008 14:24

Re: Pq no sigue la eejcucion de código?
 
ummm gracias...lo probaré mañana a ver:
Puedes explicarme esto un poco mas sobre esto?:

ClientScript.RegisterClientScriptBlock(me.gettype( ), "foo", "window.open('tupagina.aspx?descargar=1')", true)

He buscado un poco por google (lo prometo!) y no encuentro nada claro... para que sirve clientscript.registerclientscriptblock?me.gettype( )?"foo" es un nombre cualquiera?tupagina.aspx es la página "padre"? Y el interrogante en tupagina.aspx? porque? descargar = 1? Y el último true?

de javascript poquito la verdad... perdon

xknown 07/04/2008 16:13

Re: Pq no sigue la eejcucion de código?
 
Revisa la documentación de ClientScriptManager

Con respecto a "tupagina.aspx?descargar=1", se supone que esa página corresponde a aquella desde la que envías el documento PDF (no tengo idea como se llama), por otro lado, si esa página realiza más de una acción, el parámetro "descarga" te serviría para identificar que quieren descargar, para lo cual en el evento Page_Load debería haber algo como:

if (!string.IsNullOrEmpty(request.Params["descarga"]))
ImpresiónServiCaixa();

Saludos

chascos69 11/04/2008 00:12

Re: Pq no sigue la eejcucion de código?
 
Al final me di por vencido.. no he conseguido que continúe la ejecución de código pq. tampoco entiendo muy bien como ejecutar lo de : ClientScript.RegisterClientScriptBlock(me.gettype( ), "foo", "window.open('tupagina.aspx?descargar=1')", true).. gracias de todas maneras


La zona horaria es GMT -6. Ahora son las 10:02.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.