Curso Lenguaje GO

Aplicación con acceso RDP

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

  • pamda
    inició un tema Aplicación con acceso RDP

    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.

  • pamda
    respondió
    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.

    Deja un comentario:


  • pamda
    respondió
    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.

    Deja un comentario:


  • J_M_Movilla
    respondió
    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.

    Deja un comentario:


  • J_M_Movilla
    respondió
    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.

    Deja un comentario:


  • gilman
    respondió
    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.

    Deja un comentario:


  • J_M_Movilla
    respondió
    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.

    Deja un comentario:

Trabajando...
X