El registro ya esta creado,que me lo abra

Cuando meto un NIF me avisa si ya existe.

Private Sub NIF_BeforeUpdate(Cancel As Integer)
If DCount("*", "Clientes", "NIF = '" & Me.NIF & "'") > 0 Then
MsgBox "El NIF/CIF introducido ya existe como Cliente", vbInformation, "Base de datos de Clientes"
Cancel = True
End If
End Sub

Como hacer ahora para que me abra ese registro.

2 Respuestas

Respuesta
2

Existen varias formas de mostrar el registro,

1. Con DAO, ADO obtener los campos y mostrarlos con MsgBox.

2. Con la función DLOOKUP() para cada campo, guardándolos en variables y después mostrar la información concatenada en un MsgBox.

3. En un formulario dependiente de la tabla Clientes, abriéndolo pasando como Argumento el NIF o el ID.

4. Creando una instancia del formulario. Es más complejo y requiere conocimiento de Colecciones y en general de VBA.

Por simplicidad le explico la primera:

Supongamos que la tabla Clientes tiene estos campos:

NIF

Nombres

Apellidos

El código quedaría así:

Private Sub NIF_BeforeUpdate(Cancel As Integer)

Dim strNomApellidos As String

If DCount("*", "Clientes", "NIF = '" & Me.NIF & "'") > 0 Then
MsgBox "El NIF/CIF introducido ya existe como Cliente", vbInformation, "Base de datos de Clientes"
'Mostramos el cliente
strNomApellidos=Dlookup("[Nombres] + Space(2) + [Apellidos]", "Clientes", "NIF = '" & Me.NIF & "'")
Msgbox "INFORMACIÓN DEL CLIENTE" & vbcrlf & _
"NIF= " & Me.NIF & vbcrlf & _
"NOMBRES Y APELLIDOS = " & strNomApellidos
Cancel = True
End If

End Sub

Y hay muchas formas más.

gracias, pero lo que busco es que me abra la ficha, no que me muestre por pantalla

En este caso sigue las instrucciones de Jacinto

Se me olvido decirle que mi respuesta se basa es en formularios independientes, en este caso no se puede clonar el formulario

Respuesta
1

Aprovechando lo que tienes, poniendo una llamada

Call MuestraRegistro  que sería un Nuevo Procedimiento

Private Sub NIF_BeforeUpdate(Cancel As Integer)
If DCount("*", "Clientes", "NIF = '" & Me.NIF & "'") > 0 Then
    MsgBox "El NIF/CIF introducido ya existe como Cliente", vbInformation, "Base de datos de Clientes"
    Cancel = True
    Call MuestraRegistro  'Línea añadida
End If
End Sub
Sub MuestraRegistro()  
 Dim Rst As DAO.Recordset 
 Dim StrCriteria As String  
 StrCriteria = "NIF = '" & Me.NIF & "'"
 Set Rst = Me.RecordsetClone 
 Rst.FindFirst StrCriteria 
 If Rst.NoMatch Then 
     MsgBox "Algo ha fallado porque el Registro debe existir.", vbInformation 
 Else 
     Me.Bookmark = Rst.Bookmark 
 End If  
 Set Rst = Nothing  
End Sub

No lo he probado pero debería funcionar. JTJ

me da el fallo:

error 7951
expresión que tiene referencia no valida en la propiedad Recordsetclone

Me puedes decir por que es el error o la línea que falla

Gracias.

Tal como te comente, no lo había probado.

Ignoro si tu formulario está vinculado o no a un Origen de datos. Si no está vinculado hemoos de elegir otro camino y cargar los datos por medio de un>>

Me.RecordSource= ......

No obstante le doy una mirada, pero será mañana o pasado porque ando un poco liado.

Dime si tienes Origen de datos una Tabla o Consulta o es Formulario Independiente.

Saludos >> JTJ

Releyendo el historial, veo que la Respuesta de Eduardo que es válida, tampoco cuble tus necesidades y citas>>

"... Lo que busco es que me abra la ficha, no que me muestre por pantalla"

Ahí ya me pierdo y no sabría que respuesta darte con probabilidades de acierto.

Mi sugerencia es que generes una pregunta nueva, con la cabecera que ya tienes en ésta, que está muy clara, pero lo que ya no está es el Objetivo final. Y que es que te "abra el Registro"

Saludos >> JTJ

¡Gracias! Por atender mi petición. Volveré a ver si alguien me puede dar una pista

No obstante lo anterior y como te había prometido, he mirado lo que te comenté y lo he simplificado.

Te adjunto enlace de Fichero en el que funciona.

https://www.mediafire.com/file/0tm7x4tr7mo4vpa/MuestraRegSiExiste.rar/file 

Saludos >> JTJ

Gracias, por haberte molestado, en conseguir la forma de como hacerlo.

Me guardare el ejemplo y así, si alguien más lo necesita se lo mandare.

Doy por cerrado el asunto:

Y gracias a toda la comunidad por el apoyo que prestáis.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas