Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/04/2007, 04:26
Avatar de cokete
cokete
 
Fecha de Ingreso: noviembre-2004
Mensajes: 224
Antigüedad: 20 años, 5 meses
Puntos: 0
Duda de programación....cerrar conexiones

Hola amigos, tengo una pequeña duda, creo que es bastante logica pero ya estoy empezandome a rallarme... a si que la voy a preguntar por si las moscas..

Sigo teniendo nuemrosos problemas con mis conexiones a bases de datos, el server me dice que TOO many client tasks... intento cerrar todas las conexiones que abro...

Tengo una serie de paginas con el siguiente problema...

En el principio del codigo abro la conexion a la base de datos..... y al final de la pagina la cierro...

el problema es que en el medio de la pagina, en mi codigo tengo varios Response.Redirect.... por lo que hay se produce un salto y imagino que nunca llegara a ejecutarse ese cierre de conexion que hago al fuinal de la pagina....

os pongo el codigo de ejemplo:

Código:
<!--#include file="logon.inc"-->
<%

' Proceso la entrada de información en función del tipo de operación
Select Case Request.Form("tipo")
	Case "insert"
		strTipoInfo="0"
		stremail=Replace(Request.Form("email"),"'", """")
		strnombre=Replace(Request.Form("nombre"),"'", """")
		If Not ISEMAIL(stremail) then
				advertencia="La direccion de email introducida es erronea"
				Response.Redirect("admin.email.asp?senal=" & advertencia &"&tipo=insert&nom="&strnombre&"&mail="&stremail&"")
		End If
		If EMAILREPETIDO (stremail) then
				advertencia="Ya hay un destinatario en la base de datos con ese E-mail"
				Response.Redirect("admin.email.asp?senal=" & advertencia &"&tipo=insert&nom="&strnombre&"&mail="&stremail&"")
		End If
		
		SQL="INSERT INTO emails (email, nombre) VALUES"
		SQL=SQL &" ('" & stremail &"', '"  & strnombre &"');"
		Conn.Execute SQL
		
		' Recupero el ultimo valor establecido en el PK
		Dim lngUltimo
		SQL="SELECT MAX(codemail) AS Ultimo FROM emails;"
		Set Snap=Server.CreateObject("ADODB.Recordset")
		Snap.Open SQL, Conn
			If Not(Snap.EOF And Snap.BOF) Then
				If Not(Isnull(Snap.Fields("Ultimo"))) Then
					lngUltimo=Snap.Fields("Ultimo")
				End If
			End If
		' Redirijo a la página
		Response.Redirect("admin.emails.asp")

	Case "update"

		stremail=Replace(Request.Form("email"),"'", """")
		strnombre=Replace(Request.Form("nombre"),"'", """")
		stremail=Replace(Request.Form("email"),"'", """")
		
		If Not ISEMAIL(stremail) then
				advertencia="La direccion de email introducida es erronea"
				Response.Redirect("admin.email.asp?senal=" & advertencia &"&tipo=insert&nom="&strnombre&"&mail="&stremail&"")
		End If
		
		If EMAILREPETIDO (stremail) then
				advertencia="Ya hay un destinatario en la base de datos con ese E-mail"
				Response.Redirect("admin.email.asp?senal=" & advertencia &"&tipo=insert&nom="&strnombre&"&mail="&stremail&"")
		End If
		
		SQL="UPDATE emails SET email='" & stremail &"', nombre='" & strnombre &"'"
		SQL=SQL & " WHERE codemail=" & Request.Form("codemail") & ";"
		Conn.Execute SQL
		' Redirijo a la página
		Response.Redirect("admin.emails.asp")
End Select

' Operación de Borrado
If Request.QueryString("tipo")="delete" Then
	SQL="DELETE FROM emails WHERE codemail=" & Request.QueryString("codemail") & ";"
	Conn.Execute SQL
	
	' Redirijo a la página
	Response.Redirect("admin.emails.asp")
End If

%>
<!--#include file="close.inc"-->

En el archivo de inclusion logon abro la conexion, y la cierro en el close.inc...como veis entre medias hay varios response.redirect... mi duda es si realemnte no se esta ejecutnado el close.inc nunca...

Muchas gracias.