Consulta de código de formulario en access para buscar un registro y si es nuevo ingresarlo en tabla

He creado un formulario basado en una tabla con un campo clave (fId autonumérico), y otra clave sin duplicados llamada fClaveCliente (Entero Largo), además de otros datos como fNombre, fApellidos, etc.
Mi idea es que al abrir el formulario para añadir un nuevo registro en la tabla y rellenar el campo fClaveCliente, si no existe previamente me continúe permitiendo rellenar campos (eso lo hace sin poner nada ;)) Pero si meto una clave en fClaveCliente que previamente ya existía, en vez de que me dé el error "(...)cambios no realizados porque se crearían valores duplicados en el índice(...)", me localice ese registro en cuestión para poder editarlo. He intentado con este código pero me da error en la instrucción Bookmark.
Private Sub fSIP_AfterUpdate()
    ' Buscar el registro que coincida con el control.
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[fSIP] = " & Str(Nz(Me![fSIP], 0))
    If rs.EOF Then
    Exit Sub
    Else
    Me.Bookmark = rs.Bookmark
    End If
End Sub
¿Se te ocurre algo mejor?

1 respuesta

Respuesta
1
El campo auto sale sobrando tu clave es código
como quieres buscar agregar y modificar en los mismos controles sera un poco difícil explicarte
veras al estar agregando tienes que hacer undo para no agregar y luego buscar
Ha quedado perfecto. Añado el código para que la gente lo pueda probar si lo necesitara...
Private Sub fSIP_AfterUpdate()<span style="white-space: pre;"> </span>
<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>Me.RecordsetClone.FindFirst ("fSIP=" & fSIP)
<span style="white-space: pre;"> </span>If Me.RecordsetClone.NoMatch = False Then
<span style="white-space: pre;"> </span>Me.Undo
<span style="white-space: pre;"> </span>Me.Bookmark = Me.RecordsetClone.Bookmark
<span style="white-space: pre;"> </span>End If
End Sub
Gracias experto!
No se ha quedado bien el código en el post... lo vuelvo a poner:
Private Sub fSIP_AfterUpdate()
   If Me.RecordsetClone.NoMatch = False Then
       Me.Undo
       Me.Bookmark=Me.RecordsetClone.Bookmark
   End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas