Crear un formulario de búsqueda

Tengo una base de datos (access 2007), con tabla y formulario llamado Socios, donde figuran: nombre, dirección, código postal, ciudad, nº de DNI .

¿Cómo puedo crear un formulario dónde pueda buscar en estos diferentes campos? Por ejemplo buscar los López que vivan en Sevilla y en la dirección *

Luego que me muestre por debajo el resultado de dicha consulta y clicando en el nombre que quiero me lleve a la ficha de dicha persona en el formulario Socios

Respuesta

Tu quieres crear un formulario de búsqueda y que al ir buscando te devuelva el recordset a medida que lo va encontrando o al hacer click en un botón, por ejemplo, "¿Buscar"?

Si deseo crear un formulario de búsqueda y que al ir buscando me devuelva el recorset a medida que lo va encontrando o si te parece más fácil al hacer click en un botón de Buscar.

Una vez encontrado el nombre que quiero que al clickar sobre el registo vaya a la ficha correspondiente dentro del formulario

Disculpa por la demora, lo primero que debes hacer es crear una tabla socios con los datos que me has dicho. Segundo, sería crear tu formulario de búsqueda, que en el encabezado de formulario va tener 1 combobox y 2 textbox.

El formulario debe tener como origen de registro la tabla socios.

El cuerpo de tu formulario (el detalle) debe ser visto como Formulario único tipo contínuo que permita entrada de datos, ediciones y filtros.

Tu combobox debe llamarse cmb_ciudad y tener como origen lo siguiente:

SELECT DISTINCT socios.ciudad, socios.ciudad FROM socios ORDER BY socios.ciudad; 

y debe ser dependiente de la columna 1.

Tus textbox deben llamarse txt_apellidos y txt_direccion.

En la codificación del VBA para Access debes definir las variables globales a utilizar:

Dim ciudad_buscar As String
Dim apellido_buscar As String
Dim direccion_buscar As String

y crear un procedimiento de búsqueda como este:

Private Sub buscar(Optional ByVal ciudadp As String, Optional ByVal apellidop As String, Optional ByVal direccionp As String)
On Error Resume Next
Dim sql As String
sql = "select * from socios " & _
        " where ciudad like '" & ciudadp & "*'" & _
        " and apellido like '" & apellidop & "*'" & _
        " and direccion like '" & direccionp & "*';"
Me.RecordSource = sql
Me.Requery
End Sub

En el evento al cambiar de tu combobox y textbox debes colocar:

Private Sub txt_apellidos_Change()
If IsNull(Me.cmb_ciudad) Then
    ciudad_buscar = ""
Else
    ciudad_buscar = Me.cmb_ciudad
End If
If IsNull(Me.txt_apellidos) Then
    apellido_buscar = ""
Else
    apellido_buscar = Me.txt_apellidos
End If
If IsNull(Me.txt_direccion) Then
    direccion_buscar = ""
Else
    direccion_buscar = Me.txt_direccion
End If
Call buscar(ciudad_buscar, apellido_buscar, direccion_buscar)
Me.txt_apellidos.SetFocus
Me.txt_apellidos.SelStart = Me.txt_apellidos.Width - Len(txt_apellidos.Text)
End Sub

Para el combobox sería en la parte final:

Me.cmb_ciudad.SetFocus

y para txt_direccion:

Me.txt_direccion.SetFocus
Me.txt_direccion.SelStart = Me.txt_direccion.Width - Len(txt_direccion.Text)

Finalmente lo que estás buscando también es poder abrir un formulario "detallado", entonces debes crear otro formulario llamado socios y agregar un control tipo botón en tu formulario en cada uno de los registros que permita desplegar la información, su código podría ser:

Private Sub cmd_abrirform_Click()
DoCmd.OpenForm "socios", acNormal, , "codsocio = " & Forms!buscar_socios![codsocio] & "", acFormEdit, acDialog
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas