Cómo evitar que se repita un campo clave luego de eliminar el último?

Vengo con otro problemita...

Tengo una tabla con Num_Afiliado como campo clave...

Si tengo 10 afiliados y elimino el número 10, cuando vuelvo a insertar un afiliado, ese afiliado toma el número 10 con el código que tengo... No quieren que se repitan los números de afiliados... ¿Alguna idea de cómo hacerlo?

Pego el código con el cual inserto... Por ahí me dan una mano a partir del mismo...

Gracias!

Set Rs Afiliado = New ADODB. Re cord set
Rs Afiliado . Source = "AFILIADOS"

Wi th Rs Afiliado
.Open "Select * from AFILIADOS", Base, ad Open Static, ad Lock Optimistic
.Add New
!num _ orden = Val(txt Afiliado(4). Text)
!Num _ Afiliado = Val(txt Afiliado(0). Text)
!Apey Nom Afiliado = txt Afiliado(1). Text
!Fnac Afiliado = Format (DTP FNac.Value, "DD/MM/YYYY")
!Tipo Doc = cmb Tipo Doc. Text
!NumDoc = Val(txtAfiliado(2).Text)
!Monto = Int(txtAfiliado(3).Text)
!Alta = Fecha Inscripcion
!Re gimen Pre vi sio nal = Cmb Tipo Re gimen . Te xt
.Up date
End With
cmd Guardar. Enabled = False
'********************* REFRESCA GRILLA Afiliados
Re fresca Grilla
'*********************
Set RsMax = Base.Execute("Select Max(Num_Afiliado) As Maximo From Afiliados")
'Base. Execute "UPDATE Afiliados set Num Afiliado = '" & (RsMax ! Maximo) & "' where Num Afiliado = " & CLng (RsMax ! Maximo) & ""
txtAfiliado (0). Text = RsMax ! Maximo
If RsMax . State = adState Open Then RsMax . Close
Set RsMax = Nothing
MsgBox "El/la Sr./a. " & frm Alta Afiliados . TxtAfiliado(1). Text & " Se ha ingresado como Afiliado. ", vb Information, "ALTA DE AFILIADOS."
cmd Guardar . En abled = False

End If
Refresca Grilla

Tuve que separa el texto porque me decía que había demasiadas letras seguidas sin espacio en el texto... Ja.

1 respuesta

Respuesta
2

Si Num_Afiliado lo configuras en la tabla como Autonumérico, ya te evitas ese problema y toda la parte de código para generarlo "manualmente".

Si por el motivo que sea necesitas hacerlo así, puedes crear una tabla auxiliar (por ejemplo TUltimo) con un único campo en el que escribes el último número que tienes asignado.

Luego, a la hora de registrar un nuevo socio, en vez de buscar el máximo de la tabla con DMax, miras el número de esa tabla TUltimo, le sumas 1, se lo asignas al socio, e incrementas el valor de la tabla en 1 también.

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas