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