Cancelar consulta si no se encuentran registros

Soy nuevo en el foro, un saludo a todos!

Estoy haciendo una base de datos y me encuentro con un problema. Siento que es mas sencillo de lo que parece pero no me doy cuenta.

Tengo una consulta la cual al ejecutarla se abre un  [Ingrese nombre cliente], y me trae los resultados.

El problema es que cuando no existe el registro, se ejecuta igual pero en blanco y con los nombres de los campos.

Y lo mismo me pasa cuando la ejecuto desde un formulario (Panel Principal) con un botón de Consultar clientes.

¿Qué tengo que hacer para que salga un msgbox diciendo que no existe el cliente y se cancele la consulta?

No se si conviene hacerlo en la consulta o directamente en el botón del formulario.

Respuesta
2

Si lo vas a hacer desde un botón, sin ningún cuadro de texto donde escribas o elijas un nombre de cliente, quitaría el criterio de la consulta, con ella haría un formulario y en el evento al hacer clic del botón pondría

Dim s As String
s = InputBox("Si es usted tan amable escriba el nombre del cliente", "Muchas gracias")
If Nz(DCount("*", "clientes", "nombrecliente like '" & s & "'")) = 0 Then
MsgBox "Ese cliente no existe, que lo sepas", vbOKOnly, "El que avisa no es traidor"
Else
docmd.openform"nombredelformulario,,,"nombrecliente like '" & s & "'"
End If

Así, cuando pulses el botón te preguntará por el nombre, lo escribes, si ese nombre existe te abre el formulario sólo con ese cliente, si no existe te aparece el mensaje.

Gracias por tu rápida respuesta Icue, lo probe y me da error en la parte que te paso en negrita...

docmd.openform"Clientes,,,"Nombre like '" & s & "'"

Supuse que donde esta en negrita va el campo no?

El cuadro de texto del formulario Clientes. Mira, supongamos que tengo el formulario Clientes(te marco en amarillo un nombre)

También tengo un formulario Otro donde hay un botón.

Si pulso el botón, se abre un inputbox donde escribo un nombre que no está en el formulario

Cuando pulso Aceptar, cuenta, si hay...y como no hay

Por el contrario, si escribo un nombre que si está, en este caso el de amarillo

y pulso Aceptar

El código del botón es

Mira, hice todo tal cual me decís, e incluso le cambie los nombres a las tablas para que no haya diferencias y me sigue acusando el mismo error.

¿Me puedes mandar una copia VACÍA a [email protected]?

Es que me extraña mucho que no te funcione.

Ya encontré el error... Faltaba unas comillas despues de Clientes.

docmd.openform"Clientes",,,"Nombre like '" & s & "'"

El problema ahora es que no se como hacer lo que hacia en la consulta...

Para no tener que poner el nombre completo, en criterios de la consulta usaba... Como "*" & [Nombre del cliente] & "*"

Más que nada, porque no siempre se recuerda exactamente todos los nombres o apellidos. 

Sería lo ultimo que te pediría!

Muchas Gracias!

Te garantizo, con una probabilidad del 100% que poco a poco te irás pasando al código de VB, es más versátil. Es lo mismo pero con *

¡Gracias!  Eres un genio! Me ahorraste horas de búsqueda en la web!

Hola Icue, disculpa que joda tango, donde iría ahora el MsgBox “No se encontró el registro” en el último código que me pasaste?

Tienes toda la razón, me olvidé del mensaje. Para no cambiar lo anterior lo puedes poner como

Dim s As String
s = InputBox("Escribe una cadena del nombre", "Porfa")
If DCount("*", "clientes", "nombrecliente like ""*""&'" & s & "'&""*""") >= 1 Then
DoCmd.OpenForm "clientes", , , "nombrecliente like ""*""&'" & s & "'&""*"""
Else
MsgBox "Te equivocas, ese cliente no existe", vbOKOnly, "Otro día será, no deseperes"
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas