Evitar duplicado en un campo con el código =dmax("[Id]","[Nombre de la tabla]")+1?

Tengo formulario con el siguiente código que incrementa el valor de un campo de una tabla, sin embargo al utilizar el formularios como front end y con múltiples usuarios, el código repite algunas veces, ¿cómo puedo evitarlo?

=dmax("[Id]","[Nombre de la tabla]")+1

Respuesta
1

¿Es posible usar el campo id como autonumérico? Ésta sería una solución, supongo que el retraso en la red es lo que provoca la duplicación, de todas formas también puedes intentar poner en las propiedades del campo de la tabla "sin duplicados", te daría un error 3022 cada vez que se intentara ingresar un numero duplicado, luego podrías ver que hacer con ese error .( que acción tomar)

Hola, ante todo muchas gracias por su respuesta. no puedo utilizar el autonumérico, ya que lo estoy utilizado como clave principal, además que el autonumérico a veces se salta los números cuando un usuario no guarda el registro. Con relación a la opción "sin duplicados" no puedo utilizarla ya que se puede repetir el código en años distintos, ya que tengo un campo donde almaceno el año en el cual se registra la información, en otras palabras, en el campo Id se genera una nueva serie numérica cada año por lo cual existe la posibilidad de que el número se repita.

Saludos y gracias nuevamente

Bien, en ese caso, entiendo que no se pueden repetir el código para el mismo año

Se me ocurre que podrías modificar para intentar hacer algo mas simple, la forma en como

Buscas el máximo agregando una condición con un parámetro

=dmax("[Id]","[Nombre de la tabla]")+1,"[año]=xxxx")

Como el año va cambiar y dependiendo del año es el numero que debe generar, lo mejor seria crear una pequeña función de devuelva ese valor de id pasándole del año como un dato (parámetro) mas o menos así

--------------------------------------------------------------------------------------

Private function NumerodeID (valor as integer) as integer

NumerodeID= =dmax("[Id]","[Nombre de la tabla]")+1,"[año]="&valor)

End function

--------------------------------------------------------------------------------------

Acá estoy suponiendo que hay un campo en la tabla que se llama "año" ( donde se almacena el año y el "valor" es el año del cual debo calcular el maximo

Luego para usar la función la llamaríamos así en un cuadro del formulario por ej

= NumeroID(nombredel del cuadro donde esta el año o nombre del campo donde fig año)

Excelente, utilizaré la función que me indicas, y como logro que no se repitan los códigos en un mismo año? porque sucede cuando hay múltiples usuarios y la red se torna lenta.

Esa es la función para que no se repitan los códigos en un mismo año, tenes que pasar el año del cual quieres obtener el numero como parámetro .

Esto debería resolver el problema incluso en red, sino podrias acelerar las actualizaciones OBCD para que las lecturas y las grabaciones en la base sean mas rápidas y así evitar repeticiones . (propiedades de la base de datos )

Bueno.

Muchas gracias por estar pendiente de mi pregunta, creare la función, y espero no se sigan repitiendo los ID en los casos cuando existan muchos usuarios conectados y trabajando sobre el mismo formulario. lo mantendré al tanto. muchas gracias.

mi correo es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas