Ya hay un DataReader abierto asociado a este comando, debe cerrarlo primero

Normalmente lo que hago para leer una tabla es utilizar un objeto SQLDataReader. Me tiene pasado en alguna aplicación la necesidad de ejecutar un Update dentro del bucle de lectura. Al estar abierto el SQLDataReader salta el error “Ya hay un DataReader abierto asociado a este comando, debe cerrarlo primero”.

Leer más “Ya hay un DataReader abierto asociado a este comando, debe cerrarlo primero”

Anuncios

Realizar un proceso batch con asp.net

Con ThreadStart y Thread podemos realizar procesos largos en páginas ASP.NET

En algunas aplicaciones web necesitamos realizar procesos que pueden durar bastante tiempo y la página nos devuelve un error de TimeOut. Estos procesos se suelen denominar batch o por lotes.

Pongamos un ejemplo

Protected Sub CmdIniciar_Click(ByVal Sender As Object, ByVal e as System.EventArgs) Handles CmdIniciar.Click
    'Espera 91 segundos. Por defecto ASP.NET el TimeOut son 90 S.
    Thread.Sleep(91000)
    'Para utilizar Thread debe estar importado System.Threading
End Sub

Leer más “Realizar un proceso batch con asp.net”

Saber que datos se pasan entre paginas (trace)

A veces necesitamos saber qué controles pasamos entre páginas mediante formularios (Form) o cadenas de consulta (QueryString). En la página que recibe los datos tenemos que recorrer la clase Request.Form o Request.QueryString para recoger los datos.

Una forma sencilla de saber qué controles estamos pasando entre páginas y sus valores correspondientes es utilizar trace.

Leer más “Saber que datos se pasan entre paginas (trace)”

Request.Form con páginas maestras (master pages)

Como utilizar los datos enviados mediante formularios con páginas maestras (master pages)

Con las Master Pages, los controles de los formularios que se utilizan para enviar datos entre páginas cambian de ID. Según el número de páginas anidadas puede variar y no siempre es el mismo texto el que se le añade. Normalmente es Ctl00$ContentPlaceHolderID$ por cada página maestra.

En vez de utilizar Request.form(“ID”) tendremos que utilizar alguna forma para reconocer el control que queremos utilizar. Sabiendo que ASP.NET utiliza el simbolo del dólar para generar el ID del control, crearemos un bucle para ir recorriendo la clase Request.form y preguntar por la clave del control.

Leer más “Request.Form con páginas maestras (master pages)”

Adjuntar archivo en eMail con ASP.NET

Añadir un archivo adjunto a un correo con asp.net

En un post anterior expliqué cómo enviar un correo con WebDav y Exchange Server (ver) y en otro expliqué cómo renderizar directamente el contendio de un informe en PDF (ver).
Ahora voy a explicar cómo aduntar ese PDF al correo electrónico.

Cuando empecé a buscar información sobre cómo adjuntar un archivo a un correo electrónico encontré enseguida la solución y es muy simple. Básicamente se trata de separar el correo en partes delimitadas por una frontera (boundary) y especificar que el contenido está compuesto por partes (multipart).
Leer más “Adjuntar archivo en eMail con ASP.NET”

Renderizar el contenido del control ReportViewer directamente a PDF

Enviar directamente al usuario un informe de Reporting Services en formato PDF.

Con este ejemplo, conseguiremos crear una página en ASP.NET con la que nos devolverá un informe de Reporting Services ya convertido en formato PDF. Dependiendo de como el usuario que accede a la página tenga configurado el Explorador de Internet, éste le abrirá el documento PDF o le pedirá guardarlo.

Vamos a ello.
Creamos una nueva página e introducimos en ella un control ReportViewer y le configuramos lo siguiente:
Leer más “Renderizar el contenido del control ReportViewer directamente a PDF”