Como evitar tomar el mismo numero al mismo tiempo cuando trabajo en red con varios usuarios en un programa access

Tengo un problema de secuencias cuando trabajo en red con varios usurios al mismo tiempo Explico: Tengo una tabla de secuencias con los campos tipo, secuencia . Al momento de grabar un formulario de pedidos toma la secuencia de esta tabla pero como varios usuarios trabajan al mismo tiempo haciendo pedidos ocasionalmente toman el mismo numero. He puesto a este campo secuencia como no duplicados pero cuando hago eso me sale un mensaje de error cuando ambos toman el mismo numero quisiera ver otra forma de hacerlo y no permita tomar el mismo numero.

3 Respuestas

Respuesta

Te recomiendo leer este articulo  http://siliconproject.com.ar/neckkito/index.php/algunas-cosillas-teoricas/cosas-que-es-bueno-saber/back-end-front-end  

Te comento que no es mi página ni mi articulo es de neckkito pero igual pienso que es la solución que buscas

Convierte tu base de datos y las tablas asignalas a un servidor o al ordenador que este prendido todo el día para que no tengas problemas

Respuesta

Diego: La Forma más simple que veo es minimizar los efectos de la Concurrencia.

Si tu grabas el registro, aunque tenga solo un dato "Al instante" de general ese cecuencial, que ignoro si es auto o por código es "casi" imposible el que concurran dos Números iguales. Por supuesto de jando el Campo sin Duplicados. Mis saludos >> Jacinto

Gracias Jacinto el secuencial lo controlo yo es decir no es autonumerico.  Como hago eso de minizar en efecto de la concurrencia puedes explicarme porque me pasa que cuando voy a ponen la secuencia que toman de la tabla de secuencias dos usuarios al mismo tiempo si se me duplican.  Y no puedo ponerle como sin duplicados porque ese campo si puede tener duplicados pero con un número de serie que es otro campo diferente. Mi problema radica en que no se porque toma el mismo número será que aplastan el botón de grabar al mismo tiempo.

Diego: Al contestarte ésta segunda parte, veo que Icue te ha sugerído una solución que considero muy acertada.

Aunque entiendo que tomas de algún sitio (No importa de dónde) el Número de pedido que corresponda, mi sugerencia era que inmediatamente hagas un >>

DoCmd. RunCommand accmdSaverecord, y se grabará el Número de Pedido en la Tabla de Pedidos.

Veo poco probable que así se produzca una duplicidad. Lo que no citas cuando comentas >>

"... En red con varios usurios al mismo..", es el Número de usuarios.

Y por supuesto he entendido que tenías la Base de Datos dividida. Si no fuera así, creo que lo que te comenta Gerardo es lo primero que deberías hacer. Mis saludos >> Jacinto

Si Jacinto efectivamente tengo la base dividida. Voy probar lo que me sugieres . Te comento que una vez que doy clic en grabar toma el número de la tabla de secuencias y al mismo tiempo le modifica la secuencia más uno para que el próximo número sea uno más. Te dejo eso para ver si me haya alguna otra sugerencia

Diego: De acuerdo, pero con lo que te recomiendo, sin saber como está la secuencia de código, ni comolo ejecutas, es que "justo al momento de capturar" el Número, has de "incrementar el contador" y grabar el pedido aunque sea solo con ese dato.

No esperes a rellenar "todos" los datos del pedido, porque entonces, en ese lapso de tiempo si que puede acceder otro usuario y el Numero que habrá en la Tabla de Secuencias será el mismo que tienes tu pendiente de grabar. Mis saludos >> Jacinto

Respuesta

Supongamos que el cuadro de texto donde grabas el numero de secuencia se llama NOrden. En sus propiedades-eventos-antes de actualizar ponle

If Dcount("secuencia","nombre de la tabla donde graba","secuencia=" & me.Norden & "")>=1 then

Msgbox"Ese número ya está cogido"

Domd. Cancelevent

Así, cuando alguien vaya a grabar un secuencia en el cuadro de texto NOrden, primero contará si ya hay uno igual y si lo hay te aparece el mensaje y el cursor se vuelve al cuadro de texto para que lo corrijas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas