• Viernes 8 de Noviembre de 2024, 15:53

Autor Tema:  No se actualiza la base de datos automáticamente al guardar  (Leído 1329 veces)

fede_orla

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
No se actualiza la base de datos automáticamente al guardar
« en: Lunes 16 de Noviembre de 2009, 11:09 »
0
Hola a tod@s:

Estoy haciendo una aplicación con Visual Basic que almacena registros en una base de datos Access 2000, pues bien, mi problema es el siguiente:

Tengo en un formulario un DataGrid asociado con un Adodc. Mientras que se están consultando los datos leo los mismos de un disco de la red, pero por problemas de bloqueos entre usuarios, cuando se quieren modificar estos datos, hago una copia en un disco local de los mismos y recargo el Adodc para que lea de local, hasta aquí va todo perfecto.

El problema llega cuando el usuario da la orden de guardar:

1.- Ejecuto UpdateBatch. Pero no actualiza los datos inmediatamente en la base de datos. Lo hace pasados unos segundos.
2.- Borro los datos anteriores de la red. Esto OK.
3.- Ejecuto una consulta para traspasar los datos del disco local al disco de la red, pero como todavía no se han actualizado los datos en el disco local (paso 1.-), se graban de nuevo los datos originales.


Esto se puede solucionar de 3 formas:

- Trabajando siempre en Red, ya que aunque tampoco grabe los datos inmediatamente, tras unos instantes el usuario ya verá sus datos grabados. Pero esta solución no es viable ya que son muchas personas a la vez trabajando con la misma tabla con ADO y da errores de bloqueo constantemente.
- Que el usuario, tras actualizar algún dato, espere 2 o 3 segundos antes de dar la orden de guardar. Lógicamente no es viable.
- Programando una pausa entre el paso 2 y 3 de 2 ó 3 segundos (sleep 3000). Pero eso no le gusta al usuario, ya que necesita grabar mucha información en poco tiempo y además ¿quién me asegura a mí que tras 3 segundos sí se han actualizado realmente los datos y no necesite 4 ó 5 segundos?.

La configuración de mi Adodc es:

adodc.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Temporal.mdb;Mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Database Password=1234"
adodc.CursorLocation = adUseClient
adodc.CursorType = adOpenStatic (he probado también con adOpenDynamic y con adOpenKeyset)
adodc..LockType = adLockBatchOptimistic (he probado también con adLockOptimistic y con adLockPessimistic)


Alguien sabe como obligar a que tras dar la orden de UpdateBatch grabe al momento en la base de datos y no tenga que hacer yo pausas en el programa.

Muchas gracias de antemano.


Federico

fap1603

  • Miembro MUY activo
  • ***
  • Mensajes: 135
    • Ver Perfil
Re: No se actualiza la base de datos automáticamente al guardar
« Respuesta #1 en: Domingo 6 de Diciembre de 2009, 23:07 »
0
Hola, lo que te recomiendo es que en el servidor tengas tu unica base de datos mbd, y en las pc's de los otros usuarios, configures el acceso a tu base de datos creando una dns en odbc del panel de control, asi no te liaras mucho con el hecho delas actualizaciones, ya que lo hara directamente en la base de datos del serv. Espero eso te ayude.

saludos,

Francisco Ayala Pinazo.
Lima - Peru
Saludos,

Francisco Ayala Pinazo
Lima - Perú