** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Buscar como busca Access
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBuscar como busca Access

 Responder Responder
Autor
Mensaje
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1045
Enlace directo a este mensaje Tema: Buscar como busca Access
    Enviado: 21/Mayo/2017 a las 14:28
Access 2010 y Windows_7
Buenos dias jóvenes
El pasado dia 16 inicie un tema bajo este mismo asunto que habia cerrado diciendo entre otras cosas que pensándolo bien,  si ya lo hace Acces para que molestarse.
Pero en fin, gracias a la gentileza y concreccion del Buho con su enlace me puse a ello y ya puedo "Buscar como busca Access".

A pesar de comentarios tan desafortunados, a mi entender, como el de Mexman70 cuando dice:

No te parece muy cómodo esperar sentado a que otro haga el trabajo main ?
Por que no nos sorprendes tu creando ese buscador que necesitas y lo cuelgas en la seccion de Aportaciones ?

Saludos !
Pdata: Saludos Civente, Emiliove y Buho !Handshake

Lo digo porque creo que la mayoría de los foreros, sinó todos,  no se dedica a esperar sentado que nadie le haga su trabajo. Simplemente se sienta a trabajar y cuando tiene dudas las plantea aquí y casi siempre se obtienen excelentes respuestas.

Tambien creo que las normas del foro no obligan a nadie a contestar, asi que si no es para ayudar creo que es mejor abstenerse.

Bueno dejo el rollo y os dejo con el asunto que interesa.

La instrución para ello es:
DoCmd.FindRecord strBuscar, acAnywhere, False, acSearchAll, True, acAll, True
La pongo  con todos sus argumentos para que se aprecie mejor en que consiste cuando se estudie.

strBuscar es la variable donde guardo el valor que deseo encontrar

En el encabezado del formulario,continuo, situo un campo TxtBuscar, donde escribir el valor que desamos buscar y superpuesta, una etiqueta EtqBuscar

Option Compare Database
Dim Buscando As Boolean
Dim strBuscar As String

Private Sub TxtBuscar_AfterUpdate()
strBuscar = Me.TxtBuscar
Me.EtqBuscar.Caption = strBuscar
Me.TxtBuscar = ""
Me.ID.SetFocus
DoCmd.FindRecord strBuscar, acAnywhere, False, acSearchAll, True, acAll, True
Me.TxtBuscar.Visible = False
Buscando = True
End Sub

Private Sub EtqBuscar_Click()
Me.TxtBuscar = Me.EtqBuscar.Caption
Me.TxtBuscar.Visible = True: Me.TxtBuscar.SetFocus
End Sub

Ya que Acces va buscando los sucesivos campos coincidentes pulsando la tecla intro, para cada uno de los campos en los que se busque la coincidencia
Por ejemplo para el campo RazonSocial

Private Sub RazonSocial_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 And Shift = 0 Then
    If InStr(Me.RazonSocial, strBuscar) And Buscando Then
        DoCmd.FindNext
    Else
        If Buscando Then
           MsgBox "Se finalizó la búsqueda", , "BUSQUEDA"
           Buscando = False
        End If
    End If
End If
End Sub

y asi sucesivamente para cada uno de los campos sobre los que se pretenda buscar
Obvio es que si son muchos los campos del formulario sobre los que se desea buscar, se podria hacer un procedimiento Sub para evitar mucho código repetitivo.

Para quien desee destripar el cuadro de dialogo buscar/Reemplazar le dejo este bonito y sencillo ejemplo.
http://www.mvp-access.es/juanmafan/descargas/finddialog.htm
Y ya por último, cuando realizamos busqueda sobre un cuadro de texto para filtrar coincidentes en un cuadro de lista, cuadro combinado, etc. etc.. yo utilizo para comparar, lo siguiente
strConv(Titular, 2, 1042) like '*" & StrConv(Me!txFiltro.text, 2, 1042) & "*'"
que facilita mucho lo de los acentos.
Creo que lo saqué en su dia por gentileza del Señor Avelino Sampaio.

Hora de comerBeer

Si los administradores tienen a bien incluirlo en el hilo anterior creo que quedaria mas completo el tema inicialmente creado.

Saludos a todos y

Por favor cerrar el hilo





< x="0" y="0" width="99999" height="99999" id="hc_extension_off">

Editado por main - 21/Mayo/2017 a las 19:23
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5300
Enlace directo a este mensaje Enviado: 21/Mayo/2017 a las 21:42
Hola buenas noches.

Main, ¿puedes esperar a cerrar el hilo?.

Me gustaría analizar tu código y, si se me ocurre algo, pues eso, hacer algo al respecto. Si no te importa, claro.

Gracias en cualquier sentido que tu consideres.

Saludos.


Editado por VIMIPAS - 21/Mayo/2017 a las 21:42
Gracias
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1045
Enlace directo a este mensaje Enviado: 21/Mayo/2017 a las 22:25
No hay ningun problema por mi parte.

saludos


Editado por main - 21/Mayo/2017 a las 22:26
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5300
Enlace directo a este mensaje Enviado: 21/Mayo/2017 a las 22:46
Hola de nuevo.

Main, he probado con un formulario continuo y dos campos: id, RAZONSOCIAL

En el encabezamiento del formulario tengo los dos controles que tu citas, el de texto y la etiqueta.


TRABAJADORES
ID RAZONSOCIAL
1 VICENTE
2 JOSE
3 CAROLINA
4 DOLORES
5 MAIN

Y lo que he pegado arriba son los registros que me ocupan.

He buscado en Txtbusca: Agua

El resultado es que se me va al último registro, donde está MAIN

Preguntas:
1.- ¿Sabes tu porque se va al último registro?. Yo he revisado tu código y no se porque se vá allí.
2.- Si en tu código no encuentra el primer registro... ¿Buscando ya es True?.

Échame un cable, ando un poco perdido... por cierto nunca se me había ocurrido hacer lo que ya hace Acces, aunque a lo mejor esto me sirve para entender otras cosas.

Por cierto, lo de Roberto es porque es veterano de guerra (como muchos de nosotros), y claro, él sabe perfectamente lo que dice y porque lo dice, ha visto muchos por aquí que lo "quieren hecho y a ser posible para ayer".

Tu ya estás demostrando que no es eso lo que parecía. Gracias.

Saludos.

P.D.: Roberto  Thumbs Up, gracias a ti también, a ver si le sacamos punta a este tema y aprendemos algo todos, al menos a mi me interesa todo lo que sea (tu ya lo sabes) "BUSCAR", con mayúsculas.


Editado por VIMIPAS - 21/Mayo/2017 a las 22:52
Gracias
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1045
Enlace directo a este mensaje Enviado: 21/Mayo/2017 a las 22:52
No veo el codigo que has puesto por ningun lado
Edítalo aqui y lo miro
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5300
Enlace directo a este mensaje Enviado: 21/Mayo/2017 a las 22:55
Hola de nuevo Main.

Aquí tienes el mío:

Option Compare Database
Dim Buscando As Boolean
Dim strBuscar As String

Private Sub RAZONSOCIAL_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 And Shift = 0 Then
    If InStr(Me.RAZONSOCIAL, strBuscar) And Buscando Then
        DoCmd.FindNext
    Else
        If Buscando Then
           MsgBox "Se finalizó la búsqueda", , "BUSQUEDA"
           Buscando = False
        End If
    End If
End If
End Sub

Private Sub TxtBuscar_AfterUpdate()
strBuscar = Me.txtbuscar
Me.EtqBuscar.Caption = strBuscar
Me.txtbuscar = ""
Me.id.SetFocus
Me.RAZONSOCIAL.SetFocus
DoCmd.FindRecord strBuscar, acAnywhere, False, acSearchAll, True, acAll, True
Me.txtbuscar.Visible = False
Buscando = True
End Sub

Private Sub EtqBuscar_Click()
Me.txtbuscar = Me.EtqBuscar.Caption
Me.txtbuscar.Visible = True: Me.txtbuscar.SetFocus
End Sub

Ya cuentas.

Saludos.
Gracias
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1045
Enlace directo a este mensaje Enviado: 21/Mayo/2017 a las 23:38
Solo veo una linea de más pero parece intrascendente.
Me.RAZONSOCIAL.SetFocus
A mi no me ocurre.
Comienza en el primer registro y se pasea por todos los campos, registro a registro mientras haya coincidencia
En cualquier caso creo que Agua no existe y no lo encontrará
Pero supongo que "MAIN" es el registro en que te encuentras antes de buscar
Si a pesar de ello quieres ir a otro registro ya sabes como usar el docmd gotorecord para ir al registro que quieras
Que versión de Access usas?


Editado por main - 22/Mayo/2017 a las 10:09
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9233
Enlace directo a este mensaje Enviado: 22/Mayo/2017 a las 18:38
Access 2010 Windows 7

Se realizaron pruebas y comento lo siguiente:

Al buscar sobre campo con datos existentes y coincidentes con lo buscado, se realiza la búsqueda sobre las coincidencias pero se pasa a un nuevo registro y al llegar al campo donde se realiza la búsqueda lanza el mensaje indicando que finalizó, creo que el mensaje debería ser antes de crear un nuevo registro.

Si se busca un texto que no haya ninguna coincidencia se sitúa en el primer registro del campo donde se realiza la búsqueda y al presionar enter lanza el mensaje avisando que se finalizó la búsqueda pero no informa si hubo resultados.

Main: Requerimos que avise si hubo coincidencias y que si llega al último registro también avise que ya esta en el último registro y que no se vaya a un registro nuevo. El plazo para la finalización del buscador ya esta fuera de tiempo.  je, je, je....
Acoto: Ya vez que poniendo manos a la obra inmediatamente llueven las ideas ?

Para avisar que no hubo coincidencias lo puedes controlar así:

Private Sub TxtBuscar_AfterUpdate()
strBuscar = Me.TxtBuscar
Me.EtqBuscar.Caption = strBuscar
Me.TxtBuscar = ""
Me.strFormula.SetFocus
If DCount("*", Me.Form.RecordSource, "RazonSocial=" & Chr(34) & strBuscar & Chr(34)) > 0 Then
   DoCmd.FindRecord strBuscar, acAnywhere, False, acSearchAll, True, acAll, True
   Me.TxtBuscar.Visible = False
   Buscando = True
Else
   MsgBox "No hubo coincidencias"
End If
End Sub

Saludos !
Pdata: Ya vez que el que le va a poner la cereza al pastel vas a ser tú...  Civente solo le va a soplar a las velas... ji, ji, ji...

< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1045
Enlace directo a este mensaje Enviado: 22/Mayo/2017 a las 18:46
Pues tan sencillo com verificar el instr() al entrar en el campo
Tambien controlar que el formulario tenga registros y algún etc más.
Bueno, y que seguramente con el uso y bajo según qué circunstacias pueden ocurrir algunos detalles más dignos de controlar.
Tampoco pretendía dar ningún ejemplo en tanto no fuera debidamente contrastado y probado.
Los detalles te los dejo a ti para cuando lo incluyas en tus funciones favoritas
Autorizado quedas
Clap

Saludos

y ahora sí, se puede cerrar el tema.


Editado por main - 22/Mayo/2017 a las 19:13
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9233
Enlace directo a este mensaje Enviado: 22/Mayo/2017 a las 19:12
Gracias por tan generosa oferta, no esperaba menos de tí. Clap

Saludos !! 

< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable