Sistema inestable trabajando en red
Hola:
Mira he publicado en el foro, pero aun no obtengo una respuesta concreta a el problema planteado.-
Las dudas son respecto al uso de los DataSet, debido a mi falta de experiencia en este tipo de programación.-
Lo concreto es que realice un pequeño sistema, utilizando VB.net, todo el desarrollo lo realice utilizando los asistentes del mismo, o sea desde la conexión al SQL Compack 3.5, como al diseño de las pantallas.-
Básicamente el sistema, utiliza para todos los casos dos formularios, el primero muestra a través de un DataGridView todos los registro cargados y con botones permite el acceso a otras subrutinas como ser Borrar, Modificar, Listar, Buscar, y Agregar registros. EL segundo formulario permite exclusivamente Agregar y/o Modificar registros.-
En el primer formulario se llena el DataSet, para poder mostrar los registros existentes, en el segundo se recarga el dataset de la base principal con los filtros de acuerdo si es una ALTA o una MODIFICACIÓN y se agregan los DataSet de las bases auxiliares.-
El enlace entre la primera pantalla y la segunda se realiza en forma MODAL (ShowDialog)
Luego de realizar el ALTA o MODIFICACIÓN cierro el formulario, lo que retorna a la linea siguiente de la primer formulario donde se actualiza nuevamente el DataSet, de esta manera logro que los puestos de trabajo refresquen la información y se actualice la base de datos real.-
El problema es que en determinadas ocasiones (no siempre) aparece el siguiente mensaje:
Excepción no controlado en la aplicación. Si hace clic en Continuar la aplicación omitirá el error e intentara continuar. Si hace clic en Salir la aplicación se cerrara inmediatamente.
Hay una infracción de uso compartido de archivos. Puede que otro proceso este usando el archivo (S:\Servicios\DBservicios.sdf).
Al seleccionar la opción Continuar, el sistema realmente continua y la base se actualiza correctamente.-
El mensaje en si es correcto, ya que seguramente alguna terminal esta accediendo a la base de datos al cargar el DataSet, lo que no se como hacer es que reintente en ves de mostrar ese mensaje.-
Tanto al momento de hacer el UPDATE de la tabla, como al cargar el DataSet utilizo la siguiente instrucción.
Try
........
Catch ex As Data.SqlServerCe.SqlCeException
zConexion = zConexion + 1
If zConexion = 10 Then
MsgBox("Otra Aplicación o Puesto de Trabajo tiene Bloqueda la Base de Datos", MsgBoxStyle.OkCancel, "Verifique")
End If
End Try
zConexion es una variable para poder realizar un contador para que realice 10 intentos antes de mandar el mensaje, pero como te mostré anteriormente el error salta como no controlado.-
Pregunta: realmente trabaja como Yo me lo imagino, o sea, luego de detectar el error se ejecuta la opción del Catch, vuelve a intentarlo o continua con la próxima linea después de End Try.
Si tienes tiempo y ganas pongo a tu disposición los fuentes.
Desde ya muchas Gracias.
Omar
Mira he publicado en el foro, pero aun no obtengo una respuesta concreta a el problema planteado.-
Las dudas son respecto al uso de los DataSet, debido a mi falta de experiencia en este tipo de programación.-
Lo concreto es que realice un pequeño sistema, utilizando VB.net, todo el desarrollo lo realice utilizando los asistentes del mismo, o sea desde la conexión al SQL Compack 3.5, como al diseño de las pantallas.-
Básicamente el sistema, utiliza para todos los casos dos formularios, el primero muestra a través de un DataGridView todos los registro cargados y con botones permite el acceso a otras subrutinas como ser Borrar, Modificar, Listar, Buscar, y Agregar registros. EL segundo formulario permite exclusivamente Agregar y/o Modificar registros.-
En el primer formulario se llena el DataSet, para poder mostrar los registros existentes, en el segundo se recarga el dataset de la base principal con los filtros de acuerdo si es una ALTA o una MODIFICACIÓN y se agregan los DataSet de las bases auxiliares.-
El enlace entre la primera pantalla y la segunda se realiza en forma MODAL (ShowDialog)
Luego de realizar el ALTA o MODIFICACIÓN cierro el formulario, lo que retorna a la linea siguiente de la primer formulario donde se actualiza nuevamente el DataSet, de esta manera logro que los puestos de trabajo refresquen la información y se actualice la base de datos real.-
El problema es que en determinadas ocasiones (no siempre) aparece el siguiente mensaje:
Excepción no controlado en la aplicación. Si hace clic en Continuar la aplicación omitirá el error e intentara continuar. Si hace clic en Salir la aplicación se cerrara inmediatamente.
Hay una infracción de uso compartido de archivos. Puede que otro proceso este usando el archivo (S:\Servicios\DBservicios.sdf).
Al seleccionar la opción Continuar, el sistema realmente continua y la base se actualiza correctamente.-
El mensaje en si es correcto, ya que seguramente alguna terminal esta accediendo a la base de datos al cargar el DataSet, lo que no se como hacer es que reintente en ves de mostrar ese mensaje.-
Tanto al momento de hacer el UPDATE de la tabla, como al cargar el DataSet utilizo la siguiente instrucción.
Try
........
Catch ex As Data.SqlServerCe.SqlCeException
zConexion = zConexion + 1
If zConexion = 10 Then
MsgBox("Otra Aplicación o Puesto de Trabajo tiene Bloqueda la Base de Datos", MsgBoxStyle.OkCancel, "Verifique")
End If
End Try
zConexion es una variable para poder realizar un contador para que realice 10 intentos antes de mandar el mensaje, pero como te mostré anteriormente el error salta como no controlado.-
Pregunta: realmente trabaja como Yo me lo imagino, o sea, luego de detectar el error se ejecuta la opción del Catch, vuelve a intentarlo o continua con la próxima linea después de End Try.
Si tienes tiempo y ganas pongo a tu disposición los fuentes.
Desde ya muchas Gracias.
Omar