Este es el código original:
Dim db as Connection
Dim rs as Recordset
Dim rs1 as Recordset
db.Open "DSN=Oracle 10g; Uid=myUser; Pwd=myPassword;" 'También probé SQLServer2005
'Me conecto con éxito
Set rs = db.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
' Todo bien aquí. Puedo listar las tablas de la base de datos.
Do Until rs.EOF
List.AddItem rs!TABLE_NAME
rs.MoveNext
Looprs.MoveNext
Set rs1 = db.OpenSchema(adSchemaViews) 'Esta es la línea que me da problemas
Aunque los motores de las bases de datos tienen habilitadas las opciones de aceptar conexiones remotas y locales, y a pesar de que la autenticación del usuario y el password se realiza con éxito, la línea problemática da el error "El Proveedor no puede ejecutar la operación requerida".
Cuando, en lugar de usar un nombre DSN, utilizo una cadena de conexión, el código funciona perfectamente.
La solución la hallé luego de probar un poco con el VB6. Desde una conexión con un nombre DSN tanto vistas y tablas, son consideradas como tablas. El código que funciona es éste:
Set rs1 = db.OpenSchema(adSchemaTables)
Do Until rs1.EOF
If rs1("TABLE_TYPE").Value = "VIEW" Then
List.AddItem rs1!TABLE_NAME
End If
rs1.MoveNext
Loop
0 comentarios:
Publicar un comentario en la entrada