Insertar un campo clave que sea distinto al de otra tabla

Hago el ingreso de afiliados...

Si un afiliado se da de baja, el número de ese afiliado no lo quiero volver a usar, entonces por recomendación de gente del foro, generé una nueva tabla donde guardo los Num_Afiliado que voy eliminando...

El problema ahora es darme cuenta como modificar el código para que me lea antes de insertar el código de la otra tabla para que ese número no se use...

La inserción no la hago desde un INSERT sino con el AddNew ...

Set RsAfiliado = New ADODB.Recordset
RsAfiliado.Source = "AFILIADOS"
With RsAfiliado
.Open "Select * from AFILIADOS", Base, adOpenStatic, adLockOptimistic
.AddNew
!num_orden = Val(txtAfiliado(4).Text)
!Num_Afiliado = Val(txtAfiliado(0).Text)
!ApeyNomAfiliado = txtAfiliado(1).Text
!FnacAfiliado = Format(DTPFNac.Value, "DD/MM/YYYY")
!TipoDoc = cmbTipoDoc.Text
!NumDoc = Val(txtAfiliado(2).Text)
!Monto = Int(txtAfiliado(3).Text)
!Alta = FechaInscripcion
!RegimenPrevisional = CmbTipoRegimen.Text
.Update
End With

¿Me dan una mano?

2 respuestas

Respuesta
2

Vamos a suponer que tienes una Tabla Clientes con Numcliente y Otra tabla Eliminados con ClienteEliminado donde guardas los numcliente que hayas eliminado.

En el formulario, en el evento Antes de actualizar donde escribes el numcliente, crea un procedimiento de evento y pon

If dcount("*","eliminados","clienteeliminado=" & me.numcliente & "")>01 then

Msgbox"Va a ser que no, ese número ya fué eliminado", vbokonly+vbinformation,"Otra vez será"

Docmd. Cancelevent

end if

Te he puesto los nombre de los campos distintos para que veas que no tienen porque llamarse igual pero sí ser de datos compatibles

¡Gracias! Perdona pero hice mal la pregunta... La volví a formular porque en realidad necesito desde VB 6.0... 

No utilizo el VB desde Access.

MUCHAS GRACIAS IGUAL. Saludos!!!

Respuesta
2

Daniel: Por lo que entiendo ya tienes un Procedimiento o similar que te genera un Número autoincrementable.

En mi opinión te ahorrarías eso si usas el autonumérico de Access, pero si ya tienes ese montaje y no quieres repetir Números y para ello haces bien en llevarlos a otra Tabla.

Tu debes saber el motivo de todo ese proceso, pero yo solo guardaría el último, lo buscaría con DMax y le añadiría 1.

Si aún asi no te vale esa solución, y previendo fallos siempre puedes leer el último de las dos Tablas y al que sea mayor es al que le tienes que añadir 1.

Algo así:

Dim MaxBorrados As Long, MaxUsados As Long, NuevoNum As Long
MaxBorrados = DMax("NBorrado","TablaBorrados")
MaxUsados = DMax("Num_Afiliado","Afiliados")
If MaxBorrados > MaxUsados Then
    NuevoNum = MaxBorrados+1
Else
    NuevoNum = MaxUsados +1
End If

Esto deberías adaptarlo a tus Nombre y ponerlo donde ahora generas el siguiente Número.

No obstante insisto en que Access te ofrece los Autoincrementables y no necesitarías nada de ésto. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas