Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/08/2013, 13:11
christian72arg
 
Fecha de Ingreso: agosto-2013
Mensajes: 1
Antigüedad: 11 años, 2 meses
Puntos: 0
Sonrisa 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