Cita: Creas un objeto conn de tipo Connection que solo vive el tiempo que dura la función, ya lo que loclaraste en la misma función, y por ende ASP no sabra que hacer con conn.execute.
Pero ese no es tu error. Tu error es que le pusistes paréntesis a la funciòn sin necesitarlos. Y no regresas valor
Yo te mencionaba en ese mensaje que tenias dos errores, bueno, 3 en realidad:
1) El de sintaxis, que tenias parèntesis vacios en una función
2) El de lógica, que no considerabas el
ámbito del objeto Conn que no vivirà fuera de la funció
3) Que no regresas nada en la función
Lo tuyo se arregla bien fácil:
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(".\xxxx\xxx.mdb"))
sql="Select ..."
set rs = conn.execute(sql)
conn.close
set conn=nothing
%>
Y ya. Sin funciones ni nada. Si no quieres estar repitiendo còdigo, pues haz un include con la creación del objeto y su apertura y lo llamas desde todos tus programas.
Tu idea de usar una función es buena, pero debestomar en cuanta los tipos de datos de regeso, por ejemplo:
Cita: Function MiConexion
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(".\xxxx\xxx.mdb"))
MiConexion = conn
set conn = nothing
End Function
Ahi tienes una función que crea un objeto,
y lo regresa
Ahora, para usarla deberias de hacer algo como:
Cita: Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn = MiConexion
Set objRS = Server.createobject("ADODB.Recordset")
objRS.Open "select top 20 * from nombres a",ObjConn ,adopenstatic,adcmdtext
etcetera
....
Saludos