¿Cómo puedo seleccionar todos o ningún registro en un cuadro combinado?

Mis conocimientos en Access son limitados, aviso! Tengo una consulta en la que el campo cliente puede seleccionar hasta tres clientes (Like). En un formulario he creado tres cuadros combinados de la tabla Clientes para seleccionar hasta tres clientes, sin embargo, de modo chapucero, he añadido en la tabla cliente un registro con el valor * (para que me seleccione todos los registros) y otro Es Nulo (para que no me seleccione ninguno). ¿Hay alguna forma mejor de realizarlo que no sea esta?

1 Respuesta

Respuesta
1

No he entendido nada. Supongamos que en el formulario tienes un combinado llamado Elegir. En sus propiedades-datos-tipo origen de la fila puedes poner Lista de valores y en Origen de la Fila poner "Tres";"Todos"

Y en el evento después de actualizar

Select case elegir

case is="Tres"

Form.RecordSource = "SELECT TOP 3 nombrecompañia, nombrecontacto,ciudad, pais from clientes where ... y aquí el criterio que tengas

Case is="Todos"

form.recordsource="select * from clientes"

End select

No le pongo lo de nulo porque no veo para que sirve

¡Gracias!  Si es lo que buscaba, gracias

Intentaré explicarme mejor para si me puedes ayudar. He generado una consulta que la lanzo a través de un formulario. Esta consulta me da la opción de filtrar hasta por tres clientes. Para ello he insertado tres combos, Cliente1, Cliente2 y Cliente3 que recoge los registros de la tabla Clientes. De esta forma puedo listar la tabla Proyectos y que me filtre por el cliente que quiera. El problema viene cuando quiero seleccionar tan solo un cliente, al dejar los otros dos combos, o si escogiera dos el último combo en blanco, sin escoger ninguna opción, me lo reconoce como si seleccionara todos.  La solución chapucera que he encontrado es que el usuario escoja los tres clientes que quiera filtrar y si tan solo quiere uno o dos, en los combos restantes escoja Es Nulo, así los otros combos no filtran por nada. De la misma forma, si escoge en el combo el registro de esta tabla de Clientes que he nombrado como  * me lo reconozca como todos.

Hasta aquí tengo resuelto el problema, pero me gustaría poder cambiar el * por un Todos para que me lo filtre por todos los registros de la tabla Clientes y si selecciona Descartar que me lo recoja como un Es Nulo.

Una opción, pero no sé cómo, y que me has indicado es realizar en el dichos combos y después de actualizar el Select case …. if case Clientes1 = “Todos” then select

¿Me podrías ayudar a completar el código? Si conoces otra mejor que esta tan rebuscada no dudes en decírmela, gracias.

En tu caso, para los tres combinados que tienes, y suponiendo que el campo a Filtrar se llame NombreCliente es mejor que le pongas un botón y en el evento Al hacer clic le pongas

Dim clienteA As String
Dim ClienteB As String
Dim ClienteC As String
Dim vLargo As Integer
Dim miFiltro As String
clienteA = Nz(Me.NombreCombo1.Value, "")
ClienteB = Nz(Me.NombreCombo2.Value, "")
ClienteC = Nz(Me.NombreCombo3.Value, "")
miFiltro = ""
If clienteA <> "" Then
miFiltro = "AND [nombrecliente]='" & clienteA & "'"
End If
If ClienteB <> "" Then
miFiltro = miFiltro & " AND [nombrecliente]='" & ClienteB & "'"
End If
If ClienteC <> "" Then
miFiltro = miFiltro & " AND [NombreCliente]='" & ClienteC & "'"
End If
vLargo = Len(miFiltro)
If vLargo > 0 Then
miFiltro = Right(miFiltro, vLargo - 4)
End If
Me.Filter = miFiltro
Me.FilterOn = True

Lógicamente tendrás que cambiar nombredelcombo 1, 2 y 3 por los nombres de los tuyos.

Para lo de Todos o Ninguno, haría otro combinado con lo de la lista de Valores, solo con ellos 2 y en el evento Despues de actualizar de ese combinado

If nombre delcombiando="Todos"

form.recordsource=....

else

form.recordsource=....

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas