¿Cómo crear un formulario de búsqueda?

Tengo una tabla donde guardo los registros de cada cliente por id_cliente. Me gustaría crear un formulario que busque por id_cliente y cuando lo encuentre que me salte a un formulario que ya tengo creado para tal menester, y si no está, que me salte a un formulario para dar de alta. ¿Se puede hacer?

2 Respuestas

Respuesta
2

Con la tabla crea un formulario, y en vista diseño del formulario, en el encabezado añádele un combinado, sin el asistente. En sus propiedades-Otras-Nombre ponle Elegir. En la solapa Datos, en Origen de la fila ponle

Select idcliente,NombreCliente from Clientes;

Y en Limitar a la lista ponle Sí

En la solapa Formato, en Número de columnas ponle 2, en Ancho de las columnas ponle

0;6, te lo transforma en o cm; 6 cm

En la solapa Eventos- Después de actualizar crea un procedimiento de evento y entre Private Sub y End Sub escribe

form.recordsource="Select * from clientes where Idcliente=" & me.elegir & ""

En esa misma solapa, en el evento Al no estar en lista, crea otro procedimiento de evento y entre Private Sub y End Sub pon

Dim Clientenuevo As Integer, título As String, mensaje As Integer
título = "El Cliente que ha escrito no está en la lista"
mensaje = vbYesNo + vbDefaultButton1
Clientenuevo = MsgBox("¿Desea agregar este cliente a la lista ?", mensaje, título)
If Clientenuevo = vbYes Then
DoCmd.RunCommand acCmdUndo
DoCmd.OpenForm "Clientes", acNormal, "", "", acAdd, acDialog
Response = acDataErrAdded
End If

Me explico, si escribieras el nombre de un cliente que no está en la lista, te preguntará lo de arriba, si le dices que sí se abre el formulario Clientes en vista diálogo y en un registro nuevo. Anotas sus datos y cuando cierres ese formulario, en el combiando ya te aparece ese cliente.

Muy buenas!

He probado los dos métodos y el de cuadro combinado ha sigo el más aceptado entre los súbditos administrativos: un inconveniente, cuando selecciono un cliente que sí está en la lista, no me abre el formulario para ver sus datos. ¿Qué podría pasar?

Te lo mando por correo

Respuesta
1

Prácticamente le respondo mismo que el otro experto pero con unas pequeñas diferencias, que yo parto de un cuadro combinado. Esta técnica la uso cuando estoy facturando y el cliente no existe.

1- Seleccione de la barra de herramientas, Crear, seleccione Diseño de formulario

2. Nuevamente en la barra de herramientas seleccione Diseño

3. Elija Cuadro Combinado, llámelo cboCliente

4. Haga clic en Siguiente. (Deseo que el cuadro combinado...)

5. Busque su tabla clientes

6. Haga clic sobre los campos idcliente y nombre del cliente (o como se llamen)

7. Haga clic en Siguiente.

8. En Ascendente seleccione nombre del cliente (o como se llame)

9. Clic en Siguiente y clic en Finalizar

Ahora vamos a programar el cuadro combinado para que detecte que el cliente no está en la lista y lo queremos adicionar.

1. Nos ubicamos sobre el cuadro combinado, si no está abierta la Hoja de Propiedades, hacemos clic botón derecho, y de la lista hacemos clic en Propiedades.

2. Hay 5 pestañas: Formato, Datos, Eventos, Otras, Todas

3. Hacemos clic sobre la pestaña Datos. Seleccionamos Limitar a lista en Si.

4. Hacemos clic en la pestaña Eventos, y seleccionamos Al no estar en la lista.

5. Selecciona Generador de Código y Aceptar.

6. Dependiendo del nombre que tenga el cuadro de lista e ingrese este código:

Ahora, la idea es que cuando se abra el formulario clientes se pase a éste el nombre del cliente por eso se pasa el argumento NewData.

Muy buenas!

He probado los dos métodos y el de cuadro combinado ha sigo el más aceptado entre los súbditos administrativos: un inconveniente, cuando selecciono un cliente que sí está en la lista, no me abre el formulario para ver sus datos. ¿Qué podría pasar?

Efectivamente mi ejemplo es cuando esta sobre otro formulario digamos facturas. En su caso al cuadro combinado adicione el evento Después de actualizar y escriba :

DoCmd.Opeform "frmclientes",,"idcliente=" & me.cbocliente

Si el cliente existe logicanente aparece en la lista y pasara el parámetro filtrando por el idcliente sino abre el formulario para adicionarlo

Buen día, eperezfer:

Me da error de compilación en la línea "cboCliente": "No se encontró el método o el dato miembro".

Cbocliente es el nombre de su cuadro de lista cámbielo por en nombre que le tenga


Buen día, eperezfer:

Utilizo los parámetros que me has proporcionado. Ha quedado así:

Private Sub cboCliente_AfterUpdate()
DoCmd.Opeform "frmClientes", , "idCkuebte=" & Me.cboCliente
End Sub

Saludos.

Así es debe funcionar ¿Si o no?

Me ha el error "No se encontró el método o el dato miembro": una consulta, leyendo la sintaxis, ¿el form que debe abrir es donde está ubicado el combo o el form donde están los datos?

Enviame la base de datos a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas