Base de datos en red

Buen día! ¿Cómo te va? Mi nombre es Ricardo Valle. Actualmente acabo de finalizar el desarrollo de un programa de base de datos para una red de 30 maquinas. El programa es sencillo, el usuario ingresa su nombre y contraseña, luego carga el pedido y lo envía para que sea impreso en la impresora de red, quedando cada pedido guardado en una tabla (pedidos_reparaciones).
Mi duda es la siguiente. Yo no he usado ningún tipo de buffer para hacer este programa. El formulario de carga de datos lo creé como un formulario independiente, por lo cual cada vez que se produce el lostfocus de alguno de sus textbox, me guarda el value de dicho textbox en una variable de memoria y finalmente, cuando el usuario hace click en "enviar pedido", abro la tabla en modo exclusivo, hago el append blank y el replace y la vuelvo a cerrar. Mi idea era que la tabla este abierta la menor cantidad de tiempo posible para evitar que surja un error (si 2 usuarios hacen click en enviar desde 2 terminales distintos simultáneamente). Sin embargo estuve revisando la web y vi que la mayoría de los programadores utilizan buffers y no logro entender porque.
¿Los buffers se usan para formularios vinculados a la tabla?, o sea, ¿en los que cada textbox del form tiene como origen de datos los campos de la tabla? O yo me he equivocado y debo utilizar buffer en mi programa, ¿aun cuándo mi formulario usa variables de memoria y no los campos de la tabla directamente?
Otra pregunta : La posibilidad de que dos usuarios hagan click en el mismo instante, si bien es remota, existe, por lo cual me gustaría saber como hacer para que si eso sucediera, visual fox espere unos segundos y luego repita el proceso. ¿Debo usar el comando onerror() para definir que debe hacer VFP si 2 usuarios hacen click al mismo tiempo?
Bueno, espero que puedas aclararme un poquito estas dudas. Desde ya te agradezco muchísimo por leer mi pregunta. Saludos cordiales. Ricardo Valle

1 respuesta

Respuesta
1
La respuesta es sí, y más que en tu programa pueden intervenir hasta 30 usuarios, con mayor razón deberías el almacenamiento de información en búfer, pero en modo compartido, es decir debes abrir la base de datos y sus tablas en modo compartido (Open NombreBasedeDatos Shared) para que puedan acceder varios usuarios al mismo tiempo a la base de datos, pues en la forma que has realizado tu programa abriendo la tabla en modo exclusivo y luego guardar los datos puede suceder que dos usuarios hagan esto al mismo tiempo se presentará el error de que la tabla está en uso por otro usuario y esto podría desencadenar otra serie de errores en el sistema, y no se guarde la información ingresada, y en modo compartido el error que se podría presentar es que dos usuarios estén modificando un mismo registro al mismo tiempo y al guardar se podría presentar un error que es fácilmente controlable que es el de conflicto de actualización de datos.
Para una mejor información consulta el capítulo Programar para acceso compartido en la documentación de Visual FoxPro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas