Filtro de Consulta con Campo de Formulario
Publicado por Raul Najera (8 intervenciones) el 15/07/2021 18:46:55
Estimados todos.
Tengo la siguiente situación.
Estoy creando un formulario que tiene:
- Listbox
- Textbox
- Boton1
- Boton2
El objetivo es que el boton1 convierta los valores seleccionados en el listbox como cadena de texto entrecomillado separado por comas, con el objetivo de que el campo sirva como filtro para una consulta.
Esto quiere decir que mi consulta Ej., el filtro dentro del IN provenga del campo que trajo los valores seleccionados entrecomillados separados por coma.
El problema en si es cuando quiero ocupar ese campo como filtro en la columna1, el criterio que coloco es:
IN ([Formularios]![Nombre_Formulario]!Textbox)
Me sale la consulta vacia, sin embargo cuando hago el copypaste del valor que sale en el campo directo a la consulta si me da lo deseado. ¿me podrían ayudar?
Les comparto el código que extraje de la web. (No soy el autor) me funciona bastante bien para hacer la cadena de texto.
Tengo la siguiente situación.
Estoy creando un formulario que tiene:
- Listbox
- Textbox
- Boton1
- Boton2
El objetivo es que el boton1 convierta los valores seleccionados en el listbox como cadena de texto entrecomillado separado por comas, con el objetivo de que el campo sirva como filtro para una consulta.
Esto quiere decir que mi consulta Ej.
1
SELECT * FROM Consulta WHERE campox in ('a','b','c')
El problema en si es cuando quiero ocupar ese campo como filtro en la columna1, el criterio que coloco es:
IN ([Formularios]![Nombre_Formulario]!Textbox)
Me sale la consulta vacia, sin embargo cuando hago el copypaste del valor que sale en el campo directo a la consulta si me da lo deseado. ¿me podrían ayudar?
Les comparto el código que extraje de la web. (No soy el autor) me funciona bastante bien para hacer la cadena de texto.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Option Explicit
Private Sub Form_Current()
Dim oItem As Variant
Dim bFound As Boolean
Dim sTemp As String
Dim sValue As String
Dim sChar As String
Dim iCount As Integer
Dim iListItemsCount As Integer
sTemp = Nz(Me.txt__.Value, " ")
iListItemsCount = 0
bFound = False
iCount = 0
Call clearListBox
For iCount = 1 To Len(sTemp) + 1
sChar = Mid(sTemp, iCount, 1)
If StrComp(sChar, ",") = 0 Or iCount = Len(sTemp) + 1 Then
bFound = False
Do
If StrComp(Trim(Me.TabPrAsig.ItemData(iListItemsCount)), Trim(sValue)) = 0 Then
Me.TabPrAsig.Selected(iListItemsCount) = True
bFound = True
End If
iListItemsCount = iListItemsCount + 1
Loop Until bFound = True Or iListItemsCount = Me.TabPrAsig.ListCount
sValue = ""
Else
sValue = sValue & sChar
End If
Next iCount
End Sub
Private Sub clearListBox()
Dim iCount As Integer
For iCount = 0 To Me.TabPrAsig.ListCount
Me.TabPrAsig.Selected(iCount) = False
Next iCount
End Sub
Private Sub testmultiselect_Click()
Dim oItem As Variant
Dim sTemp As String
Dim iCount As Integer
iCount = 0
If Me.TabPrAsig.ItemsSelected.Count <> 0 Then
For Each oItem In Me.TabPrAsig.ItemsSelected
If iCount = 0 Then
sTemp = sTemp & Me.TabPrAsig.ItemData(oItem)
iCount = iCount + 1
Else
sTemp = sTemp & "," & Me.TabPrAsig.ItemData(oItem)
iCount = iCount + 1
End If
Next oItem
Else
MsgBox "Nothing was selected from the list", vbInformation
Exit Sub 'Nothing was selected
End If
Me.txt__.Value = "'" & Replace(sTemp, ",", "','") & "'"
Me.txt2 = Trim(CStr(Me.txt__.Value))
End Sub
Private Sub clrList_Click()
Call clearListBox
Me.txt__.Value = ""
End Sub
Valora esta pregunta
0