Busqueda a travès de cuadro de texto ubicado en formulario independiente.

estoy haciendo una base de datos y me gustaria hacer una busqueda desde un cuadro de texto. De modo, que cuadro introduzca un valor especifico( cedula, registro,etc.), me abra un formulario con todos los datos que acompañan  a este registro y si no, me envie un mensaje de que no esta registrado. Logre hacer algo con la macro abrir formulario condicion where ="[campo a buscar] = " & Str(Nz([Screen].[ActiveControl],0)), pero no consigo que me envie un mensaje, de no existe. Cuando el registro no esta incluido en la base de datos.

1 respuesta

Respuesta
2

Supongamos que el cuadro de texto donde escribes, por ejemplo, la cédula se llama Busca, y tienes que abrir el formulario Ventas en aquel(los) registro(s) que tengan(si lo tienen) ese numero de cédula. En sus propiedades-eventos-después de actualizar puedes poner

If DCount("cedula", "Ventas", "cedula='" & Me.busca & "'") >= 1 Then
DoCmd.OpenForm "ventas", , , "cedula='" & Me.busca & "'"
Else
MsgBox "Para que abrirlo, si no hay registros", vbOKOnly, "Que lo sepas"
End If

Suponiendo que cédula sea texto, si fuera numérico sería

"cedula =" & me.busca & ""

Así, si escribes 1234AC y está en la tabla te abre el formulario, si no está, el mensaje

Excelente, muchas gracias... Perfecto, es justo lo que estaba buscando... Gracias.

Saludos... Por acá tengo otra duda. Intento realizar una consulta que me muestre valores duplicados. Tengo un cuadro combinado que se llama estatus, con dos opciones (espera y entregado), cuyo valores se guardan en una tabla, deseo que la consulta me muestre solo los valores que están en "espera" y no los entregados...

No dices donde quieres que te lo muestre. Voy a suponer que en un formulario tienes el combinado al que llamaremos(propiedades. Otras-Nombre) Hola, que los valores que puedes escoger son los que dices, que quieres que te los muestre en el mismo formulario y que el campo de la tabla donde pones los valores espera o entregado se llama Adios. En el evento después de actualizar del cuadro Hola, crea un procedimiento de evento y entre Private Sub y End Sub pon

form.recordsource="select * from nombretablaorigendelform where adios= '" & me.hola & "'"

Delante del primer & van apostrofe comillas y al final comillas apostrofe comillas

Así, cuando elijas, por ejemplo Espera, el origen de registros del formulario serán aquellos de la tabla cuyo campo Adios tenga el mismo valor que el que has elegido en el combinado.

Por el contrario, si quieres verlo en una consulta que se abra desde el formulario, tendrías que crear una y debajo del campo Adios, en la casilla de criterios poner

Forms! Nombredelform! Hola

Y en el evento después de actualizar del combinado pone

Docmd. Openquery"nombre de la consulta"

¡Gracias! ....Listoooo. Muy bien.

Saludos. Por acá de nuevo con otro dilema y ampliando la pregunta anterior, en la cual me ayudaste mucho... Resulta que tengo una tabla con varios campos, entre ellos están (status I y status II) en cada uno de estos campos se almacenan datos (espera y entregado). Lo que deseo realizar es: Que desde un formulario con subformularios realice la búsqueda de un registro a través de un ID especifico, esta acción la vengo haciendo a través de está macro: ="[ID] = " & Str(Nz([Screen].[ActiveControl];0)), ubicada en un cuadro de texto independiente en el formulario, esto me permite buscar registros que se cargan tanto en el formulario como en los subformularios que vienen siendo dos ( status I y status II). Lo que deseo es. Que al introducir algún valor ID en el cuadro independiente, me cargue solo los valores que correspondan a los status (espera) y no me cargue los valores de entregado.

Te profetizo que terminarás usando sólo código. Las macros son poco versátiles, no dejan de ser un trozo de código al que le han puesto un nombre.

No me ha quedado claro donde están los cuadros de texto statusI y II. Vamos a suponer que están en el subformulario.(Voy a poner nombre inventados del formulario y del subformulario)

En el evento después de actualizar del cuadro de texto Buscar puedes poner

form.recordsource="select * from Ventas where id = " & me.buscar ""

me.detalleventa.form.recordsource="select * from detalleventa where id= me!parent!buscar and[status I]=""espera """

Es decir, que el origen de registros del formulario sean aquellos registros de la tabla Clientes cuyo id sea igual al que has escrito y que el origen de registros del subformulario sean aquellos de la tabla Detalleventa en que el id sea igual al id de clientes que has escrito en Buscar y que el campo Status I tenga Espera.

Gracias por la pronta respuesta. En la primera línea de código le hacia falta un ( & ) al final de buscar. Lo corregí y funciono perfecto, pero en la segunda línea me envía un error de compilación de no haber encontrado el método o el dato miembro me. detalleventa. ¿Qué estaré haciendo mal?

Por cierto los valores status I y Status II si están dentro de los subformularios...

¿Has mirado en la vista diseño del formulario como se llama el subformulario? Haz clic en el subformulario, y mira en sus propiedades-otras-nombre. Y claro que funciona.

Mira el formulario de la imagen

Como puedes ver el miércoles hay que pasar hambre.

Si pulso el botón queda como

Podrás ver que como el miércoles no hemos comido, es mejor no saber nada de él.

Y en el evento Al hacer clic del botón sólo le he puesto

NADA, sigue sin funcionar. te paso el archivo para que lo veas?

Mi correo es [email protected]

Acuérdate de poner en el Asunto tu alias Laraujo, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas