Campo autonumerico y ciclico enn formulario access

Vuelvo a molestarte. Estoy buscando hacer que un campo numérico en un formulario aparezca como autonumérico. Hasta ese punto he llegado con éxito usando el siguiente código:
Private Sub Form_Current()
If Me.NewRecord Then
Me.Control = Nz(DMax("Campo","tabla_dos"),0) +1
End If
End Sub
Ahora bien, la idea que tengo, y que preciso, es lograr que al llegar al 10, el campo vuelva a tomar el valor 1, y así infinitamente.
Intenté hacerlo agregándole al codigo anterior :
    If Me.beneficiar = 11 Then
    Me.beneficiar = 1
    End If
Pero claro, descubrí que si tiene como origen el campo de la tabla directamente siempre va a estar el 10, y al crear el 11 vuelve necesariamente al 1, sí, pero no sale de ahí. Es decir, después de agregar 10 registros todos los demás son el numero 1.
La ayuda que tengo pero que no se como utilizar, es el id de la tabla_dos. Debido a que en un formulario anterior he cargado datos que están relacionados con los de este formulario mediante numero donde id. Tabla_uno = id. Tabla_dos

1 Respuesta

Respuesta
1
Estuve probando lo que me pediste y pude solucionarlo de dos formas distintas. En ambos métodos vas a tener que utilizar un cuadro de texto invisible en el formulario que te sirva de guía para conseguir el ciclo que vos querés. En la primera sólo se logra el efecto que vos querés en el formulario, pero los datos que se guardan en el campo de la tabla, son como si fuera una autonumérico común (sin ciclo). En la segunda, se logra el efecto tanto en el formulario como en los datos que se guardan en la tabla. Pero para conseguir esto vas a tener que agregar otro campo numérico en la tabla, que te va servir de guía y que si querés podes utilizarlo cómo clave principal ya que va a tener un valor único e irrepetible para cada registro.
1) Para este método tenés que poner tu control (el que tiene origen de control en el campo de la tabla) con la propiedad Visible en NO. Creás un cuadro de texto independiente (el que se mostrará en el formulario) y en el origen de control ponés:
---------------------------
=Der([TxtCampo];1)+1
---------------------------
Y para el efecto autonumério, el código queda prácticamente igual al que vos me mostraste, sólo cambia el ValueIfNull de la función Nz:
----------------------------
Private Sub Form_Current()
Dim x As Currency
x = Nz(DMax("Campo", "Tabla"), -1) + 1
If Me.NewRecord Then
Me.TxtCampo = x
End If
End Sub 
------------------------------------------------------------------------------------------------
2) Para este método vas a tener que agregar otro campo numérico en la tabla (Campo2) y lo agregás en el formulario con la propiedad Visible en NO. El código es el siguiente:
-----------------------------------------------------
Private Sub Form_Current()
Dim x As Currency
x = (Nz(DMax("Campo2", "Tabla"), 0))
If Me.NewRecord Then
Me.TxtCampo2 = x + 1
Me.TxtCampo1 = Right(x, 1) + 1
End If
End Sub
--------------------------------------------------------
Bueno, a mi parecer este último es el más acertado, pero ante la duda...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas