Formulario de búsqueda autocompletar varias tablas

Tengo 3 tablas, una de clientes que es la principal, donde el nombre es la clave individual y otras dos con registros de datos de pedidos de esos clientes en ciudades diferentes.

Quisiera hacer un formulario de búsqueda donde escribiendo letras me salieran autocomplentando los posibles nombres de clientes y una vez escogido uno, al hacer click en un botón que me salieran todos los registros de cada tabla.

No consigo ni una cosa ni la otra puesto que solo soy capaz de llegar a cuadros combinados o de listas y para una sola tabla...

1 respuesta

Respuesta
1

No entiendo lo de "escribiendo las letras.." ¿Las letras del nombre del cliente? ¿Dónde las escribes?, ¿El formulario de búsqueda, es el propio Clientes?, etc.

Mira, si tengo una tabla Clientes

Puedes ver que hay 91.

Creo una tabla exactamente igual pero sin datos para que sea origen del ¿formulario de búsqueda? Donde le añado un cuadro de texto llamado elegir en el que voy a escribir letras

Si ahora en el cuadro de texto de arriba escribo una c

Si le añado una o

El código del evento Al cambiar del cuadro de texto Elegir es

Private Sub Elegir_Change()
Form.Refresh
Me.RecordSource = "SELECT * from clientes WHERE nombrecliente Like '" & Me.Elegir & "'&""*"""
Elegir.SetFocus
End Sub

Como no sabía si ibas a escribir la primera letra del nombre lo he puesto así, pero se le podría decir que fuera una cadena en cualquier posición del nombre del cliente. En ese caso sería

......like ""*"" & '" & me.elegir & "' &""*"""

Y, la verdad, a partir de "una vez escogido uno..." no lo he entendido.

Hola, gracias por la rapidez de la respuesta.

Es cierto, me he explicado fatal, en mi cabeza sonaba mejor.

Son tres acciones diferentes. La primera veo que las has resuelto con ese código VBA que me pasas, en tu ejemplo introduciendo "co" quedan dos posibilidades comercio mineiro y consolidated holdings.

En la segunda acción lo que quisiera es poder "seleccionar" uno de los dos y después clicando en un botón,

Una tercera donde se mostrasen todos los pedidos de las dos tablas de ciudades diferentes.

Lo puedes hacer perfectamente, pero una pregunta ¿el botón está en cada registro del formulario o es sólo uno en, por ejemplo, encabezado del formulario?

uno solo, en el encabezado

En ese caso ¿para qué poner un botón? La programación es para los vagos como yo. Tendrías que seleccionar un registro y luego pulsar el botón. Puedes hacerlo pulsando directamente sobre el nombre del cliente.

Mira, en el formulario que te dije antes escribo una a

Y ahora hago clic en Ana y

En Pedidos le he dejado a la vista el control NombreCliente para que puedas comprobar que sólo muestra los registros de la amiga Ana. Lo he puesto en vista diálogo, pero podría perfectamente estar como un subformulario oculto y sólo decirle que

pedidos.visible=true

Chico, lo siento pero sigo sin entender lo de "Todos los pedidos de las dos tablas de ciudades diferentes". ¿Es qué hay una tabla con, por ejemplo, PedidosMadrid y otra con PedidosCartagena?

Por cierto, en el evento al hacer clic del cuadro de texto NombreCliente del formulario Aux le he puesto de código

Private Sub NombreCliente_Click()
If Not IsNull([NombreCliente]) Then
DoCmd.OpenForm "pedidos", , , "nombrecliente='" & Me.NombreCliente & "'", , acDialog
End If
End Sub

Lo de If not...lo he puesto por si por error pusieras el cursor en un cuadro de texto en blanco.

si, lo puse al principio, 3 tablas, una de clientes, y otras con pedidos de dos ciudades diferentes, en mi caso Madrid y Valencia

Pues si tienes dos formularios PedidosMadrid y PedidosValencia, en el ejemplo que te puse cambia el nombre Pedidos por PedidosMadrid y en el evento Al cerrar del formulario PedidosMadrid ponle

Private Sub Form_Close()
If CurrentProject.AllForms("aux").IsLoaded Then
DoCmd.OpenForm "PedidosValencia", , , "nombrecliente=forms!aux!nombrecliente", , acDialog
End If
End Sub

Me explico, lo que le dices es que si el formulario Aux está cargado, que si lo está porque has llegado hasta ahí desde él seleccionando un registro, que abra el formulario PedidosValencia con aquellos registros en que el nombre del cliente sea igual al que elegiste en el formulario Aux

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas