Access - ListBox Multiselect y pasar criterios a consulta a traves de Tempvars

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

ListBox Multiselect y pasar criterios a consulta a traves de Tempvars

Publicado por Jordi (10 intervenciones) el 26/01/2023 12:54:34
Buenos días Chic@s,

Me estoy volviendo loco, se que estoy cerca pero no encuentro la solución. Os Explico...

Tengo un formulario con un listbox Multiseleccion ("Aprobado", "No Aprobado", "Pendiente", etc...)

Necesito pasar las selecciones del usuario, como parte de la clausula where de una consulta que alimenta un subformulario. Muchas veces utilizo Tempvars para tal fin, pero nunca había utilizado con un Listbox.

El problema surge cuando escogemos mas de un item. la consulta no saca ningún registro.

Después de seleccionar varios items del Lisbox consigo que
[TempVars]![FiltroEstado] = "Aprobada Cliente" Or "Aprobada Con Comentarios" con un pequeño
sub que concatena los items seleccionados separados por comas o por "Or" (lo he probado de todas las maneras)

Y en la consulta le tengo puesto en uno de sus campos el criterio ... Como Eval("[TempVars]![FiltroEstado]")

No me funciona, no me saca mingun registro, he probado con con comillas simples, dobles, con separado con el OR, separado por "," con Eval, sin el Eval y la verdad, ya no se que mas probar.

¿Alguien sabe que estoy haciendo mal?

Os adjunto una imagen, donde quizás se vea mejor lo que he comentado.

Muchas gracias de antemano.

Saludos,

Jordi
ErrorListbox_Multiselect
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 21
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

ListBox Multiselect y pasar criterios a consulta a traves de Tempvars

Publicado por Jordi (10 intervenciones) el 26/01/2023 14:39:18
Querido Eduardo,

Primero de todo quiero agradecerle su rápida respuesta.
He descargado su BBDD de pruebas y es una maravilla. Una fuente de inspiración en muchas ocasiones.

He revisado el apartado donde aparece el Listbox Multiselect y no se ajusta a lo que necesito, dado que en su ejemplo nos permite buscar un texto en diferentes campos.

Aunque lo que necesito es buscar varios valores en un mismo campo.
Y no se que pasa cuando cargo el String separado por "or" o "and" en una VariableTemporal que deja de funcionar.

Seguiré buceando por su aplicación a ver si lo encuentro.

Muchisimas gracias, por su tiempo y por compartir su sabiduría.

Saludos,

Jordi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

ListBox Multiselect y pasar criterios a consulta a traves de Tempvars

Publicado por Eduardo (318 intervenciones) el 26/01/2023 15:59:50
Observe este código, creo que le puede servir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub btnImprime_Click()
 
 Dim sFiltro As String
 Dim varPos As Variant
 
 If lstClientes.ItemsSelected.Count = 0 Then
    MsgBox "No ha seleccionado los registros a excluir", vbInformation, "Le informo"
    Exit Sub
 End If
 
 
 For Each varPos In lstClientes.ItemsSelected
 
   'NOTA: Si toma la columna 0 y esta contiene el  ID elija la primera opcion
 
     ' sFiltro = sFiltro & Me.lstClientes.ItemData(varPos) & ","
 
      ' Obtendría algo como: NOT IN(2,4,6)
 
      'Si toma la columna 1 y es texto escoja la siguiente opción
 
      sFiltro = sFiltro & "'" & Me.lstClientes.Column(1, varPos) & "'" & ","
 
      ' Obtendría algo como: NOT IN('Chinú','Cartagena','Sincelejo')
 Next varPos
 
 If sFiltro <> "" Then
  sFiltro = Left(sFiltro, Len(sFiltro) - 1)
 End If
 
 DoCmd.OpenReport "rptClientes", acViewPreview, , "idte NOT IN( " & sFiltro & ")"
 
 
End Sub

Observe que explico como varía el filtro de acuerdo con la columna que se tome, si es el ID (numérico) o una columna texto, creo que es su caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

ListBox Multiselect y pasar criterios a consulta a traves de Tempvars

Publicado por Jordi (10 intervenciones) el 27/01/2023 08:36:24
Buenos días Eduardo,

He seguido sus indicaciones, pero sigue sin funcionarme, creo que tiene que ver con las Tempvars.
Si edito la consulta y en criterio pongo los valores directamente
'Rechazada Cliente' o 'Pdte. Aprobación Cliente' funciona correctamente

Pero si le pongo la variable temporal en cualquiera de estas formas no arroja ningún registro
TempVars![FiltroEstado] o
Eval("TempVars![FiltroEstado]") o
In (TempVars![FiltroEstado]) o
In (Eval("TempVars![FiltroEstado]"))

También he probado con diferentes contenidos de TempVars![FiltroEstado]
TempVars![FiltroEstado] = 'Rechazada Cliente' o 'Pdte. Aprobación Cliente'
TempVars![FiltroEstado] = "Rechazada Cliente" o "Pdte. Aprobación Cliente"
TempVars![FiltroEstado] = 'Rechazada Cliente' , 'Pdte. Aprobación Cliente'
TempVars![FiltroEstado] = "Rechazada Cliente" , "Pdte. Aprobación Cliente"

¿Se le ocurre que puede estar pasando?

Muchas gracias de antemano.

Saludos,

Jordi Calvache
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

ListBox Multiselect y pasar criterios a consulta a traves de Tempvars

Publicado por Eduardo (318 intervenciones) el 27/01/2023 13:56:05
No ha seguido el ejemplo, si quiere envíeme la base de datos con información ficticia a [email protected] y veo como le colaboro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar