Accesos simultaneos a .mdb desde VB (URG)
-
sabia gente programadora:
necesitaria que alguien me guiara con el tema de acceder a DB en Access 2000 desde una aplicacion VB, les comento...
Es una aplicacion que correria en varias maquinas accesando y modificando simultaneamente DBs de access 2000.
Lo que necesitaria saber es como hacer para que desde una terminal que accede a una base de datos y la modifica, que otra terminal no pueda dado que la 1era estaria modificando el contenido y tal vez se perderian los datos...
O de repente como armar una cola de espera para las terminales y a partir de ahi empezar a permitir los accesos...
Gracias por la ayuda!
Saludos !!!!!!! -
Si te conectas usando SQL (ADODB) al archivo mdb podes usar el WITH (TABLOCK) para garantizar que vos seas el unico que va a modificar esa tabla, mientras el otro cliente corre el riesgo de un timeout por no poder recopilar datos de ahi, ojo.
Tambien podes usar TRANSACTIONS. -
eso eso de transactions me dijeron que tenia que ver...
para conectarme lo hago por ADO con sentencias SQL hacia el access...
por algun lado saben donde conseguir data sobre esas "transactions" ??¿¿?¿ o que osn?!¿!¿?!¿?
ehehjejh
gracias x la info !!!
saludos !!! -
che qwerty, no se pueden hacer transacciones con un mdb.. si en SQLServer...
MacoNia lo que decis vos se llama "concurrencia" y es cuando varios usuarios tratan de acceder a la misma base, la forma de solucionar, limitar, etc el acceso a esa base se llama "Lockeo"
y lo tenes que mezclar con el tipo de cursor que recorre el recordset , o sea el CursorType y el LockType, lo que mas te importa es el Locktype
adLockReadOnly = un recordset de solo lectura, no hay updates
adLockPessimistic = se puede hacer updates en el recordset, pero se lockea ni bien empezas a editar el recordset
adLockOptimistic = se puede hacer updates con el recordset, pero se lockea justo antes de hacer el update al registro.
adLockBatchOptimistic = es como el lockoptimistic, pero en batch...
me parece que ahi tenes que ver el tema...
otra cosa.. dependiendo del uso, la cantidad de datos y otras cosas mas, tal vez te conviene usar MSDE.
salu2 -
1.- no estoy seguro, nunca lo use, es si haces varias modificaciones al registro, se hace un update para todos juntos (los ref modificados)... si no es asi, que alguien me corrija por favor
2.-MSDE : MS Desktop Engine, es como un SQLServer, solo que para desktops y con un par de cosas propias del SQLServer recortadas, pero muchisimo mas rapido que una base de access...y con capacidad para muchos más datos.
Lo podes sacar desde el CD de Office 2000, o Visual Studio.net
Salutes -
joya markust, te agradezco mucho...
te hago una preg que seguramente estas al tanto:
no sabes que paso con las referencias de ADO ?¿
porque invoco al driver de ms access (microsoft.jet.oledb.4.0) y ni pelota
me baje le MDAC 2.7 y el service pack 3 para el JET y sigo sin poder levantarlo desde vb...
creo la referencia de Microsoft ActiveX Data Object 2.7, y puff!
ni pelota...
explota siempre...
de nuevo muchas gracias por la data!
saludos!! -
a mi el error que me tira es como que no esta reconociendo el driver de jet que esta instalado...
me fije de crear una conexion ODBC y no esta el driver, pero agarre y me baje esos que te puse arriba, primero el MDAC y despues el SP3 del JET y lo unico que hizo fue agregar "Microsoft ActiveX Data Object 2.7" pero ni pelota del JET..Código:Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBS\datachycl.mdb" cn.Open rs.Open "SELECT * FROM Clientes", cn
la verdad que me van a volver loco...
jejejeej tks markust
saludos!
