Error Conexión ODBC

Estoy programando un componente en VB para páginas ASP, que se conecta a una base de datos SQL Server a través de un DSN con DAO, pero no hay forma, estos son los pasos que he seguido y donde me he quedado:
1.- Creo la base de datos en SQL Server
2.- Creo un inicio de sesión (usuario)
Y le doy permisos sobre las tablas.
3.- Creo el ODBC, un DSN de sistema, le pongo el usuario y la contraseña que he creado en SQL y la prueba de conexión es satisfactoria.
4.- Creo una liberia con VB, genero el archivo .dll, la registro con regsrv32
Y me da el siguiente error:
DAO.Workspace error '80020009'
ODBC: error al conectar con 'bd.pruebas.sql'.
/pruebasql.asp, line 8
El código del componente es el siguiente:
Sub OnStartPage(ContextoPasado As ScriptingContext)
'Iniciar los componentes de servidor
Set mContexto = ContextoPasado
Set mResponse = mContexto.Response
Set mRequest = mContexto.Request
Set mApplication = mContexto.Application
Set mSession = mContexto.Session
Set mServer = mContexto.Server
'Conectar a la base de datos SQL
Dim strConn As String
Dim strSQL As String
strConn = "ODBC;DSN=bd.pruebas.sql;UID=qd976;PWD=jc23;"
Set mdb = DBEngine.Workspaces(0).OpenDatabase("", False, False, strConn)
strSQL = "SELECT * FROM CZSYSArbol"
Set mrs = mdb.OpenRecordset(strSQL, dbOpenDynaset, dbPessimistic)
With mrs
mResponse.Write (mrs.RecordCount)
If .RecordCount = 0 Then
.MoveLast
.MoveFirst
End If
End With
End Sub
¿Cuál es el problema?, me estoy volviendo loco y no salgo del problema.
Gracias anticipadas.

1 Respuesta

Respuesta
1
ODBC y DAO! Probablemente ese sea el problema... te recomiendo utilizar OLEDB y ADO, que es mucho más fácil y directo.
Primero que nada, te recomiendo que utilices Option Explicit para obligarte a ti mismo a declarar todas las variables. De esta manera, es mucho más fácil detectar errores de tipeo y te es más fácil leer tu código. OK. Cambiamos unas pocas líneas y listo.
Dim mdb as new ADODB.Connection
Dim mrs as new ADODB.Recordset
Esto para declarar la conexión y el recordset. Ahora el resto:
strConn = "ODBC;DSN=bd.pruebas.sql;UID=qd976;PWD=jc23;"
cambiar por
strConn = "Provider=SQLOLEDB;DATABASE=pruebas;UID=qd976;PWD=jc23;SERVER=NombreDelServidor"
Ahora,
Set mdb = DBEngine.Workspaces(0).OpenDatabase("", False, False, strConn)
Cambiar por
mdb. Open strConn
OK. Hasta aquí, tienes abierta la conexión con el server y tu base de datos. Ahora para el recordset:
Set mrs = mdb.OpenRecordset(strSQL, dbOpenDynaset, dbPessimistic)
cambiar por
mrs.open strSQL, adOpenStatic, adLockReadOnly
Y eso es todo.
Ojalá te resulte!
P.D.: Acuérdate que debes agregar las referencias necesarias para que te reconozca los objetos ADO. Son 2:
"Microsoft ADO data Object Library"
"Microsoft ADO data Object Recordset"
Con ADO no hay problema, el tema es programarlo con DAO, ya que tengo unos módulos de clases que me gustaría aprovechar.
En ese caso, te recomiendo que vuelvas a realizar tu pregunta a otra persona, ya que mi experiencia con DAO, a parte de ser amarga, es muy pobre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas