30/08/2013, 13:11
|
| | Fecha de Ingreso: agosto-2013
Mensajes: 1
Antigüedad: 11 años, 3 meses Puntos: 0 | |
MDB en Red no se ven actualizaciones Hola!
Tengo una aplicacion diseñada para trabajar en red, en VB6, conectandose por ADO a un archivo access MDB.
El archivo MDB esta ubicado en una carpeta compartida en red.
El problema es el siguiente:
- Si abro dos copias del programa en la misma computadora, y actualizo cualquier registro en el mdb desde alguna de ellas, la otra copia lo visualiza perfectamente al peticionar dichos registros.
- Si abro el programa desde dos computadoras diferentes, apuntando al mismo MDB ubicado en una carpeta compartida, los cambios hechos desde una de las copias del programa NO son visibles por el otro programa. Es decir, en la PC #1 hago un cambio sobre cualquier registro, y en la PC #2 no se reflejan esos cambios, y viceversa. Es como si mantuvieran un cache de los registros. Para que ambas PC vean los mismos cambios debo cerrar/abrir el programa (volver a conectarse a la DB).
Pero he hecho la siguiente prueba tambien con un resultado extraño:
- abrir dos copias del programa en cada una de otras dos PC. (o sea 4 copias del programa conectados al mdb simultaneamente, 2 en una PC, y 2 en la otra PC).
- si desde la copia # 1 del programa en la PC #1 hago un cambio sobre los registros del mdb, note extrañamente que los cambios en la PC #2 los veia solo en la primera copia que elegia para consultar esos mismos registros, pero en cambio la otra copia en la PC#2 no veia esos cambios (seguia con los registros anteriores).
Y viceversa. Es decir:
PC#1 - copia #1 del programa -> cambios sobre registro X.
PC#2 - copia #1 del programa -> veo esos cambios al consultar la base
PC#2 - copia #2 del programa -> NO veo esos cambios mantiene los anteriores
y viceversa. (pero si consulto primero el registro X desde esta copia #2, los veo, pero ya no los actualiza la copia #1).
Me conecto de la siguiente forma a la base de datos:
------------------------------------------
Set cn = New ADODB.Connection
With cn
.CursorLocation = adUseClient
.ConnectionTimeout = 15
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=pass;Data Source=archivo.mdb"
End With
Set rs = New ADODB.Recordset
With rs
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.CursorLocation = adUseServer
End With
------------------------------------------
Recupero de la siguiente forma:
Set rs= cn.Execute("SELECT id,data,etc", , adCmdText)
------------------------------------------
Y actualizo registros asi:
Set rs = cn.Execute("UPDATE data SET etc ....", , adCmdText)
------------------------------------------
Existe alguna condicion que no estoy considerando para trabajar con el mdb compartido y que los cambios impacten siempre sobre todas las copias del programa conectadas al mismo ?
Desde ya muchisimas gracias!
Saludos
Christian |