Sintaxis correcta en botón buscar, access 2007

Tengo una tabla y un formulario de nombre “Amigos” con cuatro campos: “Número”, “Nombre”, “Apellidos” y “Teléfono”. Lo que quiero hacer es un botón para buscar dentro del formulario que cuando le ponga el número, me salga todo lo demás, o sea me encuentre el registro correspondiente a este número.

Me han dicho que debo poner esto, pero no sé exactamente donde ni si la sintaxis es correcta.

Private Sub CampoNumero_AfterUpdate()

Me.txtNombre = DLookup("[Nombre]", "[Amigos]", "[ Amigos]![Nombre] = " & Me.txtNombre)

Me.txtApellidos= DLookup("[Apellidos]", "[Amigos]", "[ Amigos]![Apellidos] = " & Me.txtApellidos)

Me.txtTelefono= DLookup("[Telefono]", "[Amigos]", "[ Amigos]![Telefono] = " & Me.txtTelefono)

End Sub

2 Respuestas

Respuesta
2

Tona: Si el TextBox (cuadro de Texto en el Formulario), se llama por ejemplo TxtNumeroAmigo, en el Evento AfterUpdate (Después de Acualizar) del mismo puedes poner.

Private Sub TxtNumeroAmigo_AfterUpdate()
If Not IsNull(Me.TxtNumeroAmigo) Then
Me.txtNombre = DLookup("[Nombre]", "[Amigos]", "Número= " & Me.TxtNumeroAmigo)
Me.txtApellidos= DLookup("[Apellidos]", "[Amigos]", "Número= " & Me.TxtNumeroAmigo)
Me.txtTelefono= DLookup("[Telefono]", "[Amigos]", "Número= " & Me.TxtNumeroAmigo)
End If
End Sub

Estoy suponiendo que ciertamente el TextBox es Número.

Después habría que validar que lo que entras es realmente un Número.

Recuerda que en Propiedades >> Eventos has de Activar el [Procedimiento de Evento]

Ya me contarás, saludos >> jacinto

Hola Jacinto, ante todo gracias por tu interés en enseñar a una inútil como yo, te explico lo que ocurre:

Cuando pongo lo que me has mandado, sin tocar nada, lo que ocurre es que cuando escribo un numero para que me lo busque es como si le diese al botón "siguiente registro", es ecir avanza los registros de uno en uno.

Que decirte cuando he intentado cambiar nombres, pues que todo han sido errores de sintaxis y demás.

Te detallo a continuación lo más exacto que pueda lo que tengo.

Una base de datos llamada "Amigos".

En ella una tabla llamada "Amigos" con los siguientes campos:

1.- Campo de nombre "Número" formato número y es la clave principal.

2.- Campo de nombre "Nombre" formato texto.

3.- Campo de nombre "Apellidos" formato texto.

4.- Campo de nombre "Teléfono" formato texto.

Y un formulario llamado "Amigos" con los siguientes campos:

1.- "Número"

2.- "Nombre"

3.- "Apellidos"

4.- "Teléfono"

5.- Una caja de texto (Independiente) que le he borrado la etiqueta y es donde pretendo insertar el número para buscar.

No sé si te lo he aclarado o lo he liado más, espero que haya una solución.

Gracias.

Tona

PD: Las respuestas te las valoro cada vez o al final del tema?

Tona: Vamos a comenzar de cero.

Voy a suponer que el Cuadro de Texto se llama TxtNumero, que el Botón se llama BtnBusca y que ambos están en el Formulario de Amigos.

Todos los campos con Origen de Datos menos TxtNumero. Pones éste código en el Evento Click del Botón.

Private Sub BtnBusca_Click()
Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
Rst.FindFirst "Numero = " & Me.TxtNumero
Me.Bookmark = Rst.Bookmark
End Sub

Supongo que en "Referencias" tu BD, ya tendrás la librería:

Microsoft Office 12.0 Access Database Engine Object Library.

Si no la tienes, la buscas en Referencias (Editor de VBA) y la señalas. Ya me comentarás

Mis saludos >> Jacinto

Tona: Si quieres "Bordar" un poco el Código anterior.

Private Sub BtnBusca_Click()
Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
Rst.FindFirst "Numero = " & Me.TxtNumero
If Rst.NoMatch Then
     MsgBox "El Número buscado no existe",vbCritical,"SIN DATOS"
     Me.Requery ' Para que vaya al primer Registro
Else
     Me.Bookmark = Rst.Bookmark
End If
End Sub

Mis saludos >> Jacinto

Respuesta
2

¿Has probado a poner en el evento Al hacer clic del botón

form.recordsource="select * from amigos where número=forms!nombredelformulario!camponumero"

Así, cuando en el cuadro de texto Camponumero pongas alguno y pulses el botón el origen de registros del formulario será(n) aquel(los) registro(s) cuyo campo Número sea igual al que has escrito en el cuadro de texto.

Lo que me dices no me funciona, o seguramente, no lo sé llevar a la práctica.

Soy bastante novata.

Gracias

Tona

Supongamos que el formulario se llama Amigos y que el cuadro de texto donde vas a anotar el numero(Propiedades-Otras-Nombre) se llama CampoNumero(es lo que has puesto tú en Private Sub). En las propiedades del botón, en Eventos-Al hacer clic crea un procedimiento de evento y entre Private Sub... y End Sub escribe

form.recordsource="select * from amigos where Número=forms!Amigos!camponumero"

Los controles de un formulario se llaman no como aperece en sus origen de control sino como aparece en sus propiedades-Otras-Nombre.

De todas formas, si quieres, mándame un correo a [email protected] y te mando un par de ejemplos, con tus mismos datos. Si lo haces, en el Asunto del mensaje pon tu Alias Tona, ya que sé no sé quien me lo manda ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas