Problema con conexion a Access 2000 - Interfaz no compatible

31/01/2004 - 21:47 por Jesús Lozano | Informe spam
Buenas noches a todos.

Aquí llevo un rato peleándome con un ejemplito de conexión a Access 2000, y
he tenido que usar el driver ODBC para conseguirla.

Y sin embargo, he visto en todos los sitios que se podía usar el motor Jet
de accesso a BD Access, pero a mí no me funciona, con lo cual, o estoy
haciendo algo mal, o realmente, me falta algún componente en mi equipo.

Las sentencias son las siguientes:

Dim objConex
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source="&Server.MapPath("/prueba/bd.mdb")
Set objConex=Server.CreateObject("ADODB.Connection")
objConex.Open strConn

Como veis, nada del otro mundo, y sin embargo, me da el siguiente error (lo
que no ocurre usando ODBC):

a.. Tipo de error:
Provider (0x80004002)
Interfaz no compatible
/transaccion.asp, line 12

y me he quedado a cuadros. ¿Me falta algún componente? o algo parecido?

Al hilo de todo esto, os queria preguntar si el Transaction funciona sobre
BD Access, pq a mi no me ha fucionado, es decir, no me hacia rollback cuando
se supone que debía hacerlo.

El código completo que me funcionaba, salvo el rollback es:

<%@TRANSACTION=REQUIRED%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</Head>
<body>
<%
Dim objConex
Dim uni
strConn = "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ="&Server.MapPath("/prueba/bd.mdb")

Set objConex=Server.CreateObject("ADODB.Connection")
objConex.Open strConn

objConex.Execute("Insert into articulos
(idpedidos,idarticulos,idcliente,unidades) values (2,2,3,500);")
objConex.Execute("Update Articulos Set unidades=unidades-100 Where
idarticulos=2")
Set rs=objConex.Execute("Select unidades from articulos where
idarticulos=2")
uni=rs("unidades")
rs.close
Set rs=Nothing
If uni<200 then
Response.Write "entra en abort"
ObjectContext.SetAbort
Response.Write "ejecutado set Abort???"
Else
Response.Write "entra en complete"
ObjectContext.SetComplete
End if
objConex.Close
Set objConex=Nothing
Sub OnTransactionCommit()
Response.Write "<b>Transacción realizada con éxito</b>"
End sub
Sub OntransactionAbort()
Response.Write "<b>La transaccion se ha cancelado</b>"
End sub%>
</body>
</html>

Como veis, usando la conexión ODBC me funciona, la del motor Jet no. La otra
pregunta es que no me funciona el rollback, y no se si es posible usarlo
sobre Access.

Gracias de antemano

Saludos

Jesús Lozano
 

Leer las respuestas

#1 Carlos Huerta [MSFT]
03/02/2004 - 17:29 | Informe spam
Hola,

Microsoft Access no tiene ningún resource manager por lo que no soporta la
directiva
@Transaction. Eso es lo que te indica el error " Provider (0x80004002)
Interfaz no compatible"
Debes usar una versión de SQL Server o MSDE o algún otro provider que
soporte la directiva.

Para más información sobre MSDE, puedes acceder a:
http://www.microsoft.com/sql/msde/default.asp

Un saludo
Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho. El uso de los ejemplos incluidos se rige por las
condiciones indicadas en la dirección
http://www.microsoft.com/spain/misc/avisolegal.htm

Por favor no envíen emails directamente a este alias. Este alias es sólo
para uso en las newsgroups

This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Please do not send e-mail directly to this alias. This alias is for
newsgroup purposes only.
"Jesús Lozano" wrote in message
news:
Buenas noches a todos.

Aquí llevo un rato peleándome con un ejemplito de conexión a Access 2000,


y
he tenido que usar el driver ODBC para conseguirla.

Y sin embargo, he visto en todos los sitios que se podía usar el motor Jet
de accesso a BD Access, pero a mí no me funciona, con lo cual, o estoy
haciendo algo mal, o realmente, me falta algún componente en mi equipo.

Las sentencias son las siguientes:

Dim objConex
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source="&Server.MapPath("/prueba/bd.mdb")
Set objConex=Server.CreateObject("ADODB.Connection")
objConex.Open strConn

Como veis, nada del otro mundo, y sin embargo, me da el siguiente error


(lo
que no ocurre usando ODBC):

a.. Tipo de error:
Provider (0x80004002)
Interfaz no compatible
/transaccion.asp, line 12

y me he quedado a cuadros. ¿Me falta algún componente? o algo parecido?

Al hilo de todo esto, os queria preguntar si el Transaction funciona sobre
BD Access, pq a mi no me ha fucionado, es decir, no me hacia rollback


cuando
se supone que debía hacerlo.

El código completo que me funcionaba, salvo el rollback es:

<%@TRANSACTION=REQUIRED%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</Head>
<body>
<%
Dim objConex
Dim uni
strConn = "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ="&Server.MapPath("/prueba/bd.mdb")

Set objConex=Server.CreateObject("ADODB.Connection")
objConex.Open strConn

objConex.Execute("Insert into articulos
(idpedidos,idarticulos,idcliente,unidades) values (2,2,3,500);")
objConex.Execute("Update Articulos Set unidades=unidades-100 Where
idarticulos=2")
Set rs=objConex.Execute("Select unidades from articulos where
idarticulos=2")
uni=rs("unidades")
rs.close
Set rs=Nothing
If uni<200 then
Response.Write "entra en abort"
ObjectContext.SetAbort
Response.Write "ejecutado set Abort???"
Else
Response.Write "entra en complete"
ObjectContext.SetComplete
End if
objConex.Close
Set objConex=Nothing
Sub OnTransactionCommit()
Response.Write "<b>Transacción realizada con éxito</b>"
End sub
Sub OntransactionAbort()
Response.Write "<b>La transaccion se ha cancelado</b>"
End sub%>
</body>
</html>

Como veis, usando la conexión ODBC me funciona, la del motor Jet no. La


otra
pregunta es que no me funciona el rollback, y no se si es posible usarlo
sobre Access.

Gracias de antemano

Saludos

Jesús Lozano




Preguntas similares