Curso Completo Base de datos

Aplicación con acceso RDP

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Aplicación con acceso RDP

    Buenas Estimad@s..

    Luego de un periodo de receso vuelvo a las andanzas; les consulto lo siguiente.

    El escenario es así; una aplicación de facturación y control de stock desarrollada con visual basic 6.0 y como “base de datos” usando un archivo de Access. Funcionando en un Windows 7 llamémosle PC de Carlos -> PC-USER1

    En estos momentos se suma al micronegocio otro equipo de Juan -> PC-USER2, pero distante a unos cuantos kilómetros en donde se encuentra -> PC-USER1

    Implementar una VPN y la intención es usar la misma aplicación que se encuentra en -> PC-USER1, sin estar instalando en Juan -> PC-USER2 y/o empezar a cargar todo de cero o en el peor del caso duplicar “la Base de datos”. O incurrir en gastos monetarios extras que por el momento no están en condiciones de hacerlo, quizás más adelante según vaya creciendo el negocio opten por una solución web.

    Aplicando el acceso remoto al equipo -> PC-USER1 usando un parche para habilitar la múltiple conexión remota que según leí en algunos sitios que hablan del mismo, funciona bien.

    Cuales son las ventajas y desventajas, pros y contras que existen aplicando esta solución; ¿es viable? ¿En cuanto a los datos existen daños que puedan ocurrirles a los registros cuando se estén agregando o editando los mismos? ¿Es fiable la conexión? ¿Qué sugieren?


    Desde ya les agradezco por vuestro tiempo.

    Un Blog+ | “El fracaso es una gran oportunidad para empezar otra vez con más inteligencia.” Henry Ford.
    __________________________



  • #2
    Yo creo que es algo así como si trabajases en multiusuario mediante Wifi. Probablemente más lento.

    Respecto a la protección de los datos, deberás tenerlo bien resuelto mediante código, para que puedan abrir y editar los dos el mismo campo de la misma tabla, a la hora de hacer el Update Y sobre todo, que ninguno pueda añadir nuevo registro si la tabla está siendo utilizada por el otro usuario.

    Hace mucho tiempo puse el código que yo empleo para solucionar este problema.
    José María Movilla Cuadrado
    ______________________
    Normas del foro
    www.foro.vb-mundo.com
    www.vb-mundo.com

    Comentario


    • #3
      Como la aplicación va a pasar a ser multiusuario y multipuesto lo primero que pensaría es en cambiar de motor de base de datos, existen opciones gratuitas, MySql, Sql Server Express..., hay más, pero en este caso y viendo que la base de datos original es Access, me imagino que la migración de los datos y los cambios a realizar en la aplicación serían menores eligiendo SQL Server Express, pero es cuestión de elegir.
      A partir de ahí, solo sería necesario obtener una IP fija para el router del equipo que actúa como servidor, y redirigir determinados puertos en el router al que se conecta, si el coste de una IP fija no es asumible, se podría optar por enviar la IP, cada vez que está cambia a una dirección de correo y que se hagan las necesarias modificaciones en los archivos de configuración del equipo cliente para que sea posible la conexión.
      En cuanto a la integridad de los datos, como estamos trabajando en WAN, lo lógico es trabajar desconectado, por lo cual cuando se guarden los datos se debería comprobar que los datos no han sido modificados desde que se cargaron, otra opción es marcar los registros que se estén editando como bloqueados, para que si los recupera otro equipo los recupere como de solo lectura, esta última opción tiene un problema, que, si, por ejemplo, se cae la red dejaremos los registros que estemos editando bloqueados, por lo que habría que implementar una herramienta de desbloqueo de registros, además, si no distinguimos entre consulta y edición de registros, si cargamos un registro y realizamos cualquier otra tarea sin salir del registro, este también se quedaría bloqueado, impidiendo que cualquier otro usuario lo pudiese modificar.
      Una visita a las Normas del foro nunca viene mal

      Comentario


      • #4
        Efectivamente, tiene razón gilman: Tienes que cambiar la base de datos a un motor que permita el tratamiento multiusuario. Yo te aconsejo MySQL, porque la migración desde Access es sencilísima y segura, y el cambio del código es también mínimo.

        Respecto a las precauciones sobre la edición conjunta por ambos usuarios y la implementación de nuevos registros, lo tengo resuelto con el código que te indico en mi post anterior; y también tengo solucionado el caso de que quede bloqueado el acceso a los registros por cualquier adversidad.

        Voy a buscar ese post al que me estoy refiriendo, y te lo paso a continuación.
        José María Movilla Cuadrado
        ______________________
        Normas del foro
        www.foro.vb-mundo.com
        www.vb-mundo.com

        Comentario


        • #5
          En tu base de datos añades una tabla que puedes llamar, por ejemplo, "CONTROL", con un sólo campo de nombre "Bloqueo", numérico. Lo inicializas a 0 (cero)

          Es indispensable que tu aplicación asigne a cada usuario un "Número de usuario": el 1, el 2, el 3... Cuando haga el Login cada usuario se le asigna ese número, y lo pasas a una variable pública de nombre "NumUsua"

          Y cuando vayas a asignar nuevos registros de clientes, de facturas, de lo que sea que precise identificador único incremental, haces esto:


          Abres un recordset (rsNume) con el campo Bloqueo de la tabla CONTROL, y justo antes de hacer la búsqueda del nuevo identificador:
          Código:
          Controlar:
                  ' Bloqueo Update de Facturas o de Clientes, etc
                  ' -------------------------------------------------
                  Do While rsNume!Bloqueo > 0
                      '  Por si está bloqueado por otro usuario
                      ' Conviene poner un contador de tiempo por si se hace excesivo
                      '       y hay que salir sin terminar el proceso.
                      ' En principio no debe tardar más de unas milésimas de segundo, 
                      '      mientras se hace la grabación del otro usuario que esté 
                      '      haciendo el mismo proceso.
                  Loop
                  For n = 0 To 20000: Next
                  ' Esta línea no sería necesaria, pero... DA MUCHA TRANQUILIDAD.
                  If rsNume!Bloqueo > 0 Then GoTo Controlar
                    
                  ' Lo bloqueo yo hasta que termine de actualizar los números de albarán, factura, cliente, etc
                  rsNume!Bloqueo = NumUsua
                  rsNume.Update
                  DoEvents
                  For n = 0 To 20000: Next
                  ' Esta línea tampoco sería necesaria, pero... ASEGURA...
                  If rsNume!Bloqueo <> NumUsua Then GoTo Controlar
          Ahora ya puedo incrementar el registro, con garantía de que ningún otro usuario lo podrá hacer antes de que termine éste.
          Busco el número de factura (o de cliente) mayor e incremento el número

          Una vez realizada la asignación del nuevo número, DESBLOQUEO el control:
          Código:
                  ' Desbloqueo
                  rsNume!Bloqueo = 0
                  rsNume.Update
                  DoEvents
          Deberás tener un formulario para poder poner ese campo Bloqueo = 0 por si en alguna ocasión tienes algún problema y te queda el campo diferente a cero, bloqueándote tu trabajo.
          José María Movilla Cuadrado
          ______________________
          Normas del foro
          www.foro.vb-mundo.com
          www.vb-mundo.com

          Comentario


          • #6
            La transmisión resulta lenta por la WAN pero es lo que hay, y estamos apuntando a una IP fija. Por ahora sigo viendo el tema del bloqueo de base de datos, recuerdo que en su tiempo me resultaba algo rústico usar el archivo.

            Muchas Gracias Señores J_M_Movilla y gilman como siempre muy útiles sus respuestas.

            Un Blog+ | “El fracaso es una gran oportunidad para empezar otra vez con más inteligencia.” Henry Ford.
            __________________________


            Comentario


            • #7
              despues de algún tiempo de haber consultado, vengo a dejarles el siguiente enlace, en esta es sobre los BUG RDP

              https://www.google.com/search?q=bug+...hrome&ie=UTF-8
              Última edición por pamda; 01-07-2019, 07:12 AM.

              Un Blog+ | “El fracaso es una gran oportunidad para empezar otra vez con más inteligencia.” Henry Ford.
              __________________________


              Comentario

              Trabajando...
              X