Buscar registro en una tabla de access por VBA

He estado investigando en Internet un código que me permita buscar un dato de una tabla si existe y lo encontré pero me gustaría que me enviara un mensaje en caso que no exista:

Private Sub mensaje()
Dim cod As String
Dim rst As DAO.Recordset
Dim ssql As String
Dim cla As Long

cod = "Mantenimiento"

If cod <> "" Then
ssql = " select nombre from ejemplo where nombre like '*' & '" & cod & "' & '*'"
Set rst = CurrentDb.OpenRecordset(ssql)
rst.MoveNext
cla = rst.RecordCount

MsgBox ("Existe")
rst.Close
Set rst = Nothing

End If

End Sub

Que me hace falta para completar que si no existe el registro me indique lo contrario.

1 respuesta

Respuesta
1

Añade esto que te pongo en negrita:

...

cla = rst.RecordCount

If cla>0 Then

MsgBox ("Existe")

Else

MsgBox ("No Existe")

End If
rst.Close

...

o también puedes hacerlo así:

...
Set rst = CurrentDb.OpenRecordset(ssql)

If Not rst.BOF AND rst.EOF Then

MsgBox ("Existe")

Else

MsgBox ("No Existe")

End If
rst.Close

...

Un saludo.


     bit.ly/ForoNkSv 

Un cordial saludo,

realice el procedimiento de la siguiente manera

Private Sub mensaje()
Dim cod As String
Dim rst As DAO.Recordset
Dim ssql As String
Dim cla As Long

cod = "Mantenimiento"


ssql = " select nombre from ejemplo where nombre like '*' & '" & cod & "' & '*'"
Set rst = CurrentDb.OpenRecordset(ssql)
rst.MoveNext
cla = rst.RecordCount

If Not rst.BOF And rst.EOF Then

MsgBox ("Existe")

Else

MsgBox ("No Existe")

End If

rst.Close
Set rst = Nothing

End Sub

lo curioso es que busca exitosa mente la palabra mantenimiento, pero cuando cambio

la palabra no sale el mensaje no existe si no el siguiente mensaje, que podría ser.

Fallo mío al escribir el código, cambia esta línea:

If Not rst.BOF AND rst.EOF Then

por esta otra:

If Not rst.BOF AND Not rst.EOF Then

Ahora sí te debería funcionar.

Un cordial saludo,

Realice la modificación según tus indicaciones la línea de código al encontrar el datos funciona bien pero al cambiar el dato por uno que no exista con el fin de mirar el segundo mensaje

"No existe" me sigue generando el mismo mensaje que te mencione anteriormente te indico en la siguiente imagen la línea amarilla con el error 3021:

Y disculpa por si te molesto con esta inquietud pero te doy las gracias por la colaboración

Un cordial saludo,

Realice tu modificación y decidí eliminar la línea de color amarilla junto a la modificación

Que me indicaste y el código ya funciona perfecto te lo agradezco muchísimo amigo.

También te sobraría la línea

cla=rst.Recordcount

y también, ya que no usas esa variable, la de

Dim cla as long

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas