Campo Numérico para Multiusuarios

Tengo bases relacionadas con campo numérico... Cuando creo un nuevo registro le sumo +1 al ultimo de este campo para la nueva ficha.. ¿el problema es cuando son dos maquinas ya que cogen por igual el mismo valor field+1 como lo soluciono pls..?

1 respuesta

Respuesta
1
Para solucionar tu problema, debes crear un campo en alguna tabla de control, donde puedas ir guardando el valor del número siguiente.
Es decir, supón una tabla que denominamos [numeracion documentos], en la que creamos un campo llamado [NumeroSiguienteAlbaran] (Númerico/Entero Largo/Sin Decimales) y le asignamos el valor 1 para comenzar.
A continuación, debemos dar funcionalidad a este sistema, para ello podemos crear incluso un formulario, donde mostremos la información de esta tabla, para que el usuario sepa que número le toca para su siguiente albarán, y que ademas pueda echar hacia delante o hacia atrás la numeración a su antojo.
Una vez creada la funcionalidad para el mantenimiento del contador, tenemos que crear una función que permita dar el número que corresponde al usuario, y que ademas se incremente en uno para la siguiente petición.
Esta función deberá ser llamada desde el evento que realiza el alta de un nuevo registro, y como es lógico, devolver el valor que hay que asignarle.
De esta forma evitarás que dos usuarios simultanes, trabajando contra la tabla, asignen el mismo número, ya que cuando el usuario 1 accede al numerador, este le asigna el número que corresponda y actualiza al asiguiente númro, y cuando el usuario 2, pida a continuación otro número, da lo mismo que el registro anterior este validado, la función de numerador le devolverá el código que corresponda para numerar su registro.
Espero haberte ayudado.
Saludos.
Sofocles.
**********************
Mensaje Independiente:
Estoy buscando trabajo como Freelance, si puedes ayudarme
Enviame un mensaje a:
[email protected]
Estoy contento con tu respuesta, pero, en el evento que realizo como nuevo registro al sumarle +1 el usuario cancelo la operación y al hacer un nuevo registro este le devolvió otro valor +1 (se sumo dos). Y de la forma como me sugieres, ¿los dos usuarios asignan el mismo numero?... si crees que es mucho pedir, podrías recomendarme un proyecto access con este procedimiento para estudiarlo, o con tu simple sugerencia a mi nueva pregunta seria suficiente.. muchas gracias de antemano por su tiempo..
Vamos a desarrollar el método completo.
Primero creamos una tabla que vamos a denominar "TABLA DE CONTROL" y en ella creamos un campo llamado "Numerador1" de tipo entero largo, sin decimales. Le damos valor 1 y preparamos la función para numerar.
****************
Public Function NumerarSiguiente()
On Error Goto Error_NumerarSiguiente
Dim DB as Database
Dim Rec as Recordset
Set Db=CurrentDB()
Set Rec=DB.OpenRecordset("TABLA DE CONTROL",dbdynaset,dbseechanges,dboptimistic)
Dim NumeroSiguiente
NumeroSiguiente=Rec!Numerador1
Rec.Edit
Rec!Numerador1=NumeroSiguiente+1
Rec.Update
NumerarSiguiente=NumeroSiguiente
Exit Function
Error_NumerarSiguiente:
Msgbox Error$,48,"TituloAplicacion"
Exit Function
End Function
**********************
La Función lo que hace es dar el siguiente registro, e incrementar en 1 el contador.
Si esta función es llamada desde el proceso donde se crea el registro, devolverá el valor que le corresponde, y dejará el valor para la siguiente petición.
Espero haberte ayudado.
Si quieres ver el código en su contexto, puedes indicarme una dirección de correo y te enviaré un mensaje con un fichero adjunto para que lo veas de forma más ilustrada.
Estoy contento con tu rutina, y te comento que lo aplique tu consejo y funciona correctamente... pero podría molestarte con lo que ofreces en mandarme un archivo a mi dirección [email protected] , muchísimas gracias
Tan pronto como lo tenga elaborado te lo enviare.
Espero que finalices esta pregunta, y que continúes con otras cuando necesites de mis servicios.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas