Botón de comando para ir a los registros que empiecen por la misma letra
Tengo una base de datos y tengo un formulario donde aparecen todos los clientes que he introducido en una tabla. Ahora he puesto varios botones de comando de la A a la Z y quiero que al clicar en el botón de comando de la letra me aparezcan todos los registros donde en Nombre del cliente empiece por esa letra.
¿Cómo lo puedo hacer?
1 respuesta
No recuerdo de donde saqué éste ejemplo, pero seguro que es lo que buscas.
Es un Recetario, pero vale para cualquier aplicación. Adaptado a tus datos claro está.
Aquí tienes el enlace:
http://www.mediafire.com/download/nnlajpyipc2fdr0/RecetasV11.rar
Hola, gracias por el enlace pero no me deja abrirlo, creo que la versión que me envías es más superior que la que tengo. A ver si me lo puedes volver a enviar con otro formato más antiguo. Yo tengo la versión del 2003.
Gracias!
Te hago una copia en Access 2003, la pongo en un enlace y te mando la dirección del mismo.
Lo haré a lo largo de hoy.
Este és el Nuevo enlace, con la BD transformada a formato 2003.
Lo he hecho con el Access 2010 y creo que no habrá dificultades.
Puede que con el tema de Referencias. Hay un Word con una Síntesis.
He incluido una búsqueda simple pero Alfabética con ComboBox.
http://www.mediafire.com/download/4ja36k4z0ei5jmv/OtrasRecetas.rar
Ya me contarás si te funciona.
Hola, ahora si que se me abre pero no lo acabo de entender muy bien. Me voy a propiedades del botón de comando de una letra y me aparece esto:
Private Sub cmdA_Click()
Call AbreBuscador(Me.cmdA.Caption)
End Sub
No se lo que es "AbreBuscador" lo tengo que poner tal cual o hace referencia a alguna tabla o consulta porque no veo nada por ese nombre.
No me queda muy claro como lo tendría que hacer yo para que me busque los registros de la Tabla "Clientes Garrievents" por el campo llamado "Nombre".
Tendría que hacer antes una consulta o directamente en propiedades, procedimiento de evento y escribir algo..
Gracias
Antes de nada comentarte que la autoría de éste Ejemplo es de Sveinbjorn el Rojo y lo puedes encontrar entre otros cosas muy buenas en la web de Neckkito.
http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/105-aniversario/273-segundo-aniversario-de-la-web
El Fichero se llama Recetas.Zip pero está en Formato .accdb
Dicho esto:
En las Propiedades de cada Botón podrás ver que :
El Nombre es cmd+LETRA, y el Caption(Titulo), es la LETRA
En el Procedimiento Click de cada LETRA>>
Private Sub cmd+LETRA_Click()
Call AbreBuscador(Me.cmd+LETRA.Caption)
End Sub
Lo que está diciendo es Llama al Procedimiento “Publico” con el Nombre “AbreBuscador”, que está en el Módulo MdlCodigos y con el parámetro .Caption de la Letra. Ejemplo M, haz lo que allí dice que es ..
……. No te copio el código porque está ahí.
Deberás modificarlo para adaptarlo a tus Datos
Si después de esta aclaración sigues teniendo dudas, me lo comentas.
Hola, he puesto en cada botón de comando el nombre de cmd+LETRA y he probado con la A, y he puesto lo que pone en el ejemplo que me has mandado:
Private Sub cmdA_Click()
Call AbreBuscador(Me.cmdA.Caption)
End Sub
Luego al hacer clic en la letra A me aparece un mensaje de error diciendo:
error de compilación
no se ha definido Sub o Function
y me colorea en azul: "Call AbreBuscador"
Algo debo estar haciendo mal.
Si te lanza ese mensaje, supongo que es porque no tienes el Procedimiento en tu Base de Datos.
'Procedimiento para abrir el formulario "FBuscadorLetra", que en la Base de Datos del Ejemplo está en el Módulo MdlCodigos, qu es.
Public Sub AbreBuscador(Optional MiLetra As String = vbNullString)
‘Instrucciones……………
‘------------
‘-----------
End Sub
Lógicamente con los Nombres de tu Tabla y los Nombres de Campo que en ella tengas.
Además debes copiar también el Formulario FBuscadorNombre y el Formulario MsgBox.
En el listBox de FBuscadorNombre
Creo que siguiendo la operativa del ejemplo y si además sigues las líneas de código, verás cómo consigues muy buenos resultados.
No obstante si aún así no te sales, me lo comentas.
Perdona pero lo he intentado hacer con mis campos y mis tablas y no me aclaro muy bien. No se de donde vienen algunos nombres del ejemplo.
Imagino que después de poner de la A a la Z hay que poner lo siguiente, según el ejemplo:
Private Sub CboN01_Click()
'Me.Refresh
Dim NombreReceta As String
NombreReceta = Forms!FMenu.Form!CboN01.Value & "*"
Form!LstMostrador.RowSource = "SELECT Receta FROM TRecetas WHERE Receta Like '" & NombreReceta & "'"
Me.Refresh
End Sub
He intentado hacerlo con mis nombres pero sinceramente no lo acabo de sacar.
Te digo mi caso a ver como quedaría:
El formulario donde he puesto todos los botones de comando de la A-Z se llama "FClientesGarrievents" que viene de la tabla "Clientes Garrievents" donde hay varios campos "Nombre", "Apellidos", "Direccion", etc..
En el formulario están todos esos campos y quiero que al hacer clic en el botón de comando "A" me salgan todos los registros los cuales el campo Nombre empiece por A y el resto de campos que aparezcan automáticamente.
No se si debería hacer una consulta antes, es que con el ejemplo que me envías no me aclaro porque no se exactamente si seria lo mismo.
Vayamos paso a paso.
El cuadro combinado que te añadí, es una alternativa simplificada al Ejemplo de los Botones.
Funciona totalmente aparte y su código asociado es el que tú me describes y que se ejecuta cuando pulsas un Letra del desplegable. Hago énfasis en que no forma parte esencial de la operativa con los Botones.
En CboN01, no has de poner nada, las letras ya salen solas, porque si te fijas en las propiedades, y donde pone Origen de la Fila, ya tiene su propia consulta para mostrar solo las letras.
Para el resto, creo saber con bastante exactitud donde tienes las dificultades, pero la explicación no sé hacerla corta para que puedas salir.
Agrandes rasgos te puedo resumir:
Primero, y en El Módulo MdlCódigos está el Procedimiento
'Procedimiento para abrir el formulario "FBuscadorLetra"
Public Sub AbreBuscador(Optional MiLetra As String = vbNullString)
If MiLetra = vbNullString Then
BuscarLetra = False
StrSQL = "SELECT [TRecetas].[IDReceta], [TRecetas].[Receta] FROM TRecetas ORDER BY [Receta]"’ Esta línea
‘La sustituyes por:
StrSQL = "SELECT [Clientes Garrievents]. [Nombre] FROM [Clientes Garrievents] ORDER BY [Nombre]"
Else
Letra = MiLetra
BuscarLetra = True
‘Esta línea de abajo
StrSQL = "SELECT TRecetas.IDReceta, TRecetas.Receta FROM TRecetas WHERE TRecetas.Receta LIKE '" & MiLetra & "*' ORDER BY Receta"
‘La sustituyes por ésta otra
StrSQL = "SELECT [Clientes Garrievents]. [Nombre] FROM [Clientes Garrievents] WHERE [Clientes Garrievents]. [Nombre] LIKE '" & MiLetra & "*' ORDER BY Nombre"
Set Rst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
If Rst.RecordCount = 0 Then
Call MiMsg("No hay Nombres registrados para la letra seleccionada")
GoTo Salida
End If
End If
DoCmd.OpenForm "FBuscadorNombre", acDesign, , , , acHidden
Forms("FBuscadorNombre").lstRecetas.RowSource = StrSQL
DoCmd.Close acForm, "FBuscadorNombre", acSaveYes
DoCmd.OpenForm "FBuscadorNombre", , , , , acDialog
Salida:
If Not Rst Is Nothing Then
Rst.Close
Set Rst = Nothing
End If
End Sub
Has de añadir un formulario para mostrar los datos cómo en el ejemplo.
Ahí se llama “FBuscadorNombre” .De momomento si quieres, como el código va ligado, le dejas el mismo Nombre. Lo mejor es que lo importes desde la BD del Ejemplo.
Con esto hecho hasta aquí deberías de ver los Nombres que empiezan por la letra que hayas marcado
En el mismo sentido que has modificado las líneas que te indico, deberás modificar el Código del FBuscadorNombre
A ver si con esto das otro salto y si sigues teniendo dificultades, coméntamelas y poco a poco iremos avanzando.
Por cierto, supongo que en cada botón ya tiene activado [Procedimiento de evento]
En la Propiedad Al hacer Click
- Compartir respuesta