Buscar, varios campos

Tengo una base de datos sencilla, en la tabla figuran los siguientes campos:
CnBio_ID
CnBio_Name
CnAls_1_01_Alias
CnAdrPrf_Addrline1
CnAdrPrf_Addrline2
CnAdrPrf_Postal_Code
CnAdrPrf_City
CnAdrPrf_County
Cree un formulario con esos campos.
Pero ahora me gustaría saber como puedo hacer "dentro del formulario" para buscar una persona escribiendo por ejemplo:
En Name: Perez
En Postal_code: por ejemplo 28048
Y me muestre todos los perez que hay en el código 28048
Pues con el botón de access de buscar solamente se puede buscar en un campo determinado.
Lo que pretendo es que cuantos más datos escribo en los diferentes campos el resultado más preciso.

1 respuesta

Respuesta
1
Dim Rst As Recordset
  Set Rst = Me.RecordsetClone
  Rst.FindFirst "CnBio_Name=""" & Me.Name & """ and CnAdrPrf_Postal_Code=""" & Postal_code & """"
  Me.Recordset.Bookmark = Rst.Bookmark
Este código te buscara los que introduzcan en cuadros de texto independientes
Gracias por tu respuesta pero no sé donde escribir este código.
¿Es en el botón de buscar que cree dentro del formulario/ hoja de propiedades / evento?
Actualmente el código de visual basic esta así:
Option Compare Database
Private Sub Comando3_Click()
On Error GoTo Err_Comando3_Click
    Screen.PreviousControl.SetFocus
    DoCmd.RunCommand acCmdFind
Exit_Comando3_Click:
    Exit Sub
Err_Comando3_Click:
    MsgBox Err.Description
    Resume Exit_Comando3_Click
End Sub
¿O tengo que crear un formulario o subformulario solamente para la búsqueda?
Disculpa pero en este sentido soy ingnorante en Access y no conozco nada de visual basic
El código va en el botón, en vez de :
    Screen. PreviousControl. SetFocus
    DoCmd. RunCommand acCmdFind
Porue este codigo busca en el campo donde este el cursor.
Puede que necesites otro formulario para pedir los criterios de búsqueda o puedes tener cajas de texto en el mismos formulario, que sean independientes, para pedir los datos a buscar, en el ejemplo que escribí esas cajas de texto de llaman Name y Postal_code; lo que significa que debe estar identificado mediante cajas de texto diferentes los campos en que se buscara cada criterio que ingreses.
Disculpa pero no consigo. Soy torpe.
Si no es mucha molestia me podrías explicar paso a paso como tengo que hacer.
Los cuadros de texto ¿el origen cual es? ¿El campo con ese nombre? Y es de la tabla
Nunca lo hice por eso necesito saber paso a paso como crear los campos dentro del formulario (pues en el formulario ya están esos campos) o como crear un formulario de búsqueda para cuando me encuentre la persona que quiero clicar dos veces en él y ir a la ficha de la persona.
En dicho formulario ¿luego este código dónde lo tengo que poner: en el control del botón de buscar que creo? ¿O tu código lo debo poner en cada cuadro te texto?
Como ves soy torpe.
Si es mucha molestia, dejalo estar no te preocupes.
Te agradezco igualmente tus respuestas y tu trabajo.
No es ninguna molestia.
¿El origen cual es? No tiene origen, es independiente
¿El campo con ese nombre? No es de la tabla, es solo una caja de texto donde introducirás el criterio de búsqueda
En dicho formulario ¿luego este código dónde lo tengo que poner: en el control del botón de buscar ...!
Para abrir un formulracio haciendo doble click, debes introducir las siguientes instrucciones en el evento al hacer doble clic del control.
Dim Xwhere as string
xWhere= "CnBio_ID=" &  Me.TxtID
DoCmd. OpenForm [NombreFormulario],,, xWhere
en el ejempo, CnBio_ID es el campo que identifica a la persona, que esta en el formulario, y txtId es un cuadro de texto que tiene como origen el codigo de la persona
Lo voy a intentar luego te comento.
Gracias por tu paciencia
Lo acabo de probar:
En el formulario donde tengo todos los datos de la tabla, cree 8 cuadros de texto independientes
Entre en cada uno de ellos en HOJA DE PROPIEDADES / OTRAS / en nombre escribí por ejemplo en texto 0 CNBio-ID etc.
Luego en el botón (control) buscar entré en visual basic y escribí el código que tu me diste pero con todos los cuadros de texto:
Private Sub Comando3_Click()
On Error GoTo Err_Comando3_Click
      Dim Rst As Recordset
  Set Rst = Me.RecordsetClone
  Rst.FindFirst"CnBio_Name=""" & Me.Name & """ and CnAdrPrf_Postal_Code=""" & Postal_code & """" and CnAdrPrf_Addrline1=""" & CnAdrPrf_Addrline1& """"and CnAdrPrf_Addrline2=""" & CnAdrPrf_Addrline2& """" and CnBio_Id=""" & CnBio_Id & """"
and CnBio_Id=""" & CnBio_Id & """" and CnAls_1_01_Alias=""" & CnAls_1_01_Alias & """" and CnAdrPrf_City=""" & CnAdrPrf_City & """" and CnAdrPrf_County=""" & and CnAdrPrf_County & """"
  Me.Recordset.Bookmark = Rst.Bookmark
Exit_Comando3_Click:
    Exit Sub
Err_Comando3_Click:
    MsgBox Err.Description
    Resume Exit_Comando3_Click
End Sub
Pero me da error de compilación, error de sintaxis.
Disculpa pero soy torpe y seguramente estoy haciendo algo mal
El Problema es por unas comillas y de los and, Para Orderarnos un poco podríamos usar una variable
Dim aux as String
aux = "CnBio_Name=""" & Me.Name & """"
aux= aux & " and CnAdrPrf_Postal_Code=""" & Postal_code & """"
aux= aux & " and CnAdrPrf_Addrline1=""" & CnAdrPrf_Addrline1& """"
aux= aux & " and CnAdrPrf_Addrline2=""" & CnAdrPrf_Addrline2& """"
aux= aux & " and CnBio_Id=""" & CnBio_Id & """"
aux= aux & " and CnBio_Id=""" & CnBio_Id & """"
aux= aux & " and CnAls_1_01_Alias=""" & CnAls_1_01_Alias & """"
aux= aux & " and CnAdrPrf_City=""" & CnAdrPrf_City & """"
aux= aux & " and CnAdrPrf_County=""" & and CnAdrPrf_County & """"
Rst.FindFirst aux
Tienes que tomar en cuanta que si se trata de numeros, si tu campo donde buscas en numerico, el valor no debe estar entre comillas, por ejemplo
aux= aux & " and CnBio_Id=" & CnBio_Id
Algo mas; podrias validar los campos para no tener que buscar valores vacios, por ejemplo si un campo no llenan el valor de busqueda no deberia estar en el criterio de busqueda, porque estarias buscando un valor vacio paar este campo, entonces las intrucciones podrias estar antecedidas de un if, +/- asi
if trim(CnBio_Id & "")<>"" then aux= aux & " and CnBio_Id=""" & CnBio_Id & """"
Es decir si no introducen el criterio para este campo no busca en el campo
Gracias lo voy a intentar y te comento
Probé a pegar en el código tú código pero me continua dando error de compilación y error de sintaxis.
En el código aparece con una flecha amarilla y señalado con amarillo Private sub comand 18
y luego señala con error de compilación o sintaxis
aux= aux & " and CnAdrPrf_Addrline1=""" & CnAdrPrf_Addrline1& """"
Como el postal code y el Id son númericos lo que escribí fue:
aux = aux & " and CnAdrPrf_Postal_Code=" & Postal_code
aux= aux & " and CnAls_1_01_Alias=" & CnAls_1_01_Alias &
el código completo quedo de esta manera:
Private Sub Comando18_Click()
On Error GoTo Err_Comando18_Click
      Dim aux As String
aux = "CnBio_Name=""" & Me.Name & """"
aux = aux & " and CnAdrPrf_Postal_Code=" & Postal_code
aux= aux & " and CnAdrPrf_Addrline1=""" & CnAdrPrf_Addrline1& """"
aux= aux & " and CnAdrPrf_Addrline2=""" & CnAdrPrf_Addrline2& """"
If Trim(CnBio_ID & "") <> "" Then aux = aux & " and CnBio_Id=""" & CnBio_ID & """"
aux= aux & " and CnAls_1_01_Alias=" & CnAls_1_01_Alias &
aux = aux & " and CnAdrPrf_City=""" & CnAdrPrf_City & """"
aux= aux & " and CnAdrPrf_County=""" & and CnAdrPrf_County & """"
Rst.FindFirst aux
Exit_Comando18_Click:
    Exit Sub
Err_Comando18_Click:
    MsgBox Err.Description
    Resume Exit_Comando18_Click
End Sub
No entiendo lo de validar los campos. ¿Es que en vez de escribir como está arriba tengo que escribir en cada uno lo que tu me indicas ¿?
if trim(CnBio_Id & "")<>"" then aux= aux & " and CnBio_Id=""" & CnBio_Id & """"
¿cambiando en cada uno lo que sea? por ejemplo:
if trim(CnBio_Name & "")<>"" then aux= aux & " and CnBio_Name=""" & CnBio_Name& """"
Y así sucesivamente ¿?
No consigo y me da pena que pierdas tanto tiempo conmigo que en visual basic no se nada de nada.
Gracias igualmente
Viendo de manera rápida, hay un error en la isntruccion, debe existir un espacio antes del carácter &
aux= aux & " and CnAdrPrf_Addrline1=""" & CnAdrPrf_Addrline1 & """"
Sobre la validación: si se debería validar por cada campo (si fuera necesario)
Disculpa que no contesté antes pero estoy trabajando y no tengo mucho tiempo.
Voy a ver en estos días arreglar el error en el código y probarlo y luego te comento.
Gracias por tu ayuda
Gracias pero no consigo, me sigue dando error de compilación.
No creo que sea por tus instrucciones si no por mi ignorancia en este tema.
Desisto. Me supera. Lo dejaré como está y que mis compañeros busquen por la manera tradicional.
Te agradezco todo tu interés y ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas