Foros del Web » Programando para Internet » ASP Clásico »

subrutina que conecta a base de datos

Estas en el tema de subrutina que conecta a base de datos en el foro de ASP Clásico en Foros del Web. hola, ¿es posible que con una subrutina no se pueda conectar a una base de datos? tengo algo como esto: sub conectar 'aca conecto con ...
  #1 (permalink)  
Antiguo 24/06/2006, 05:37
Avatar de edu007ar  
Fecha de Ingreso: septiembre-2003
Ubicación: Buenos Aires
Mensajes: 118
Antigüedad: 20 años, 8 meses
Puntos: 0
subrutina que conecta a base de datos

hola, ¿es posible que con una subrutina no se pueda conectar a una base de datos?

tengo algo como esto:
sub conectar
'aca conecto con base de datos
end sub


y luego al llamarla con:
call conectar

y continuo con el trabajo sobre la base de datos:
sql="select....."
rs.open sql, conn
etc etc..


me tira el error de que no existe el objeto RS, es como si nunca lo hubiese creado cuando en realidad lo estoy creando en la sub.

por supuesto ya probe crear una sub sencilla que devuelva un texto, o poner el contenido de la sub en lugar de la llamada a ver si es problema de la base de datos, todo eso funciona bien, pero no funciona si llamo a la conexion...

alguien tiene idea que puede ser??

agradezco cualquier ayuda.

slds.
Eduardo.
  #2 (permalink)  
Antiguo 24/06/2006, 19:58
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
es que conectas con la BBDD pero no creas el recordset.

podrías hacer:
Código:
function abreconexion()
	Set abreconexion = Server.CreateObject("ADODB.Connection")
	abreconexion.open "la cadena que sea"
end function

function abrers(sql)
	set abrers=server.CreateObject("ADODB.recordset")
	abrers.CursorType = 0
	abrers.LockType = 1
	abrers.CursorLocation = 3
	abrers.open sql,conn
end function
y después llamarlo así:
Código:
set conn=abreconexion
set rs=abrers(sql)
  #3 (permalink)  
Antiguo 25/06/2006, 10:13
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 6 meses
Puntos: 0
Puedes poner los Set dentro de la rutina conectar. Así cada vez que la llames no tendrás problemas.

Código:
Public Sub Conectar(strCon)
    Set adoCon = Server.CreateObject("ADODB.Connection")
    On Error Resume Next
    adoCon.connectionstring = strConn
    adoCon.Open
    If Err.Number <> 0 Then	Response.Write("Error de conexión con la BBDD")
    On Error goto 0
    Set rsComun = Server.CreateObject("ADODB.Recordset")
    'Puedes continuar definiendo recordsets
End Sub

Public Sub CerrarCon()
    If isObject(rsComun) then
       Set rsComun = Nothing
    End If
    If isObject(adoCon) then
       Set adoCon = Nothing
    End If
End Sub
para llamarlos:

Código:
Call Conectar("definimoslaconexiónalaBBDD")

strSQL = "Select * from TABLA"
rsComun.Open strSQL, adoCon
rsComun.Close

Call cerrarCon
Saludos!
P.D. Creo que no he metido la "gamba", ya que no lo he probado. De todas maneras el código puede ser muy flexible y se pueden ir añadiendo los selectores para diferentes tipos de conexión para BBDD, más recordsets auxiliares, etc...
  #4 (permalink)  
Antiguo 26/06/2006, 08:07
Avatar de edu007ar  
Fecha de Ingreso: septiembre-2003
Ubicación: Buenos Aires
Mensajes: 118
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias por las respuestas... voy a probar, creo haber hecho esto pero no de la misma forma, voy a ver si funciona.

Gracias.
Eduardo.
  #5 (permalink)  
Antiguo 26/06/2006, 09:11
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Cita:
Iniciado por edu007ar
hola, ¿es posible que con una subrutina no se pueda conectar a una base de datos?

tengo algo como esto:
sub conectar
'aca conecto con base de datos
end sub
o simplemente trata declarando las variables

Cita:
dim rs, conexion, otras
sub conectar
'aca conecto con base de datos[/COLOR]
end sub
__________________
JuanRa Pérez
San Salvador, El Salvador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:36.