Vale, ya he buscado y no he encontrado el qué, así que pregunto porque llevo toda la tarde ensuciando código sin lograr nada. Si alguien me puede iluminar al respecto le estaré eternamente agradecida y si no eternamente, pues un tiempo largo.
Mensaje de error: La operación no está permitida si el objeto está cerrado.
Ya sé que es un clásico pero ninguno de los trucos que haya usado anteriormente ha servido esta vez.
Tengo estas funciones de para acceso a bd access
Código PHP:
Sub AbrirBd()
Set DB1= server.createObject("ADODB.Connection")
DB1.Provider = "Microsoft.Jet.OLEDB.4.0;"
DB1.Properties("Jet OLEDB:Database password") = bdPwd
DB1.Open "Data source=" & bdDatos
DB1.Properties("Jet OLEDB:Transaction Commit Mode") = 1
DB1.Properties("Jet OLEDB:Implicit Commit Sync") = True
Set DB2= server.createObject("ADODB.Connection")
DB2.Provider = "Microsoft.Jet.OLEDB.4.0;"
DB2.Properties("Jet OLEDB:Database password") = bdPwd
DB2.Open "Data source=" & bdComun
DB2.Properties("Jet OLEDB:Transaction Commit Mode") = 1
DB2.Properties("Jet OLEDB:Implicit Commit Sync") = True
End Sub
Esto lleva funcionando hace años perfectamente.
Luego hay otra función para crear un recordset que también funciona perfectamente desde hace el mismo tiempo
Código PHP:
Function CreaRecordSet(consulta, Base)
On Error Resume Next
Err = 0
Set rc = server.createObject("ADODB.Recordset")
Set rc.ActiveConnection = Base
rc.CursorLocation = 3
rc.Open consulta, , 3, 1
Set CreaRecordSet = rc
End Function
Bien. En cada documento en el que se abren las bases de datos y se crean tantos RC como sean necesarios funciona de coña.
Si embargo lo mismo, en un documento nuevo que he creado me revienta en el momento de intentar pedir el valor de un campo obtenido a partir de el segundo recordset que se pida.
ejemplo:
Código PHP:
AbrirBd
Set rc = CreaRecordSet("SELECT pepe from tabla1 Where Tipo='6' and otro='3'", DB2)
Clase = rc("pepe")
Hasta ahí como siempre
pero si repito con otra consulta ....
Código PHP:
Set rc = CreaRecordSet("SELECT pepino from tabla2 where Asunto = '23r", DB2)
otraClase = rs("pepino")
me sale con el mensaje de que La operación no está permitida si el objeto está cerrado.
Si lo hago a la inversa pasa lo mismo. La primera consulta siempre me la devuelve bien y en la segunda, sea cual sea, me da el error.
Si le quito el otraClase = rs("pepino") pero ejecuto la función CreaRecordSet no da error. Sólo me da el error cuando trato de sacar el campo que he pedido.
Las mismas funciones trabajan en otros documentos sin problema.
¿Alguna idea de qué pasa?
Muchas gracias