Access - Error con SetFocus en Formulario con ListBox

 
Vista:
sin imagen de perfil

Error con SetFocus en Formulario con ListBox

Publicado por Nelson (3 intervenciones) el 09/09/2022 14:58:19
Buenas a Todos,
Necesito ayuda para poder codificar un formulario de consulta donde tengo 2 TextBox que sirven de criterio para los datos que se mostrarán en un Cuadro de Lista (ListBox).

No logro hacer que:
1-) En el ListBox aparescan los datos filtrados por ambos TextBox simultáneamente.
2-) El código actual me aparece con error "No se puede hacer referencia a una propiedad o a un control a menos que el control tenga enfoque" ---> donde debo poner el SetFocus para que el puñetero control NTexBox1 tenga enfoque?

Aquí va el código, espero podáis ayudarme, Que si, que hay burradas en el código, corregirme lo que veáis y así aprendemos todos:

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
Public Sub Buscar(NTextBox1 As TextBox, NTextBox2 As TextBox, NListBox As ListBox, NTabla As String, ParamArray NCamposWhere() As Variant)
 
    On Error GoTo ManipulaError
 
 
    Dim NCampo As Variant, NCampo2 As Variant, SQL As String, SQL2 As String
 
    ' Aquí hago bucle para que pueda filtrar por varios campos según los caracteres que ponga en NTextBox1
 
    For Each NCampo In NCamposWhere
        SQL = SQL & "[" & NCampo & "] Like '*" & Replace(NTextBox1.Text, "'", "''") & "*' OR "
    Next NCampo
 
    'Aquí hago bucle para que pueda filtrar por varios campos según los caracteres que ponga en NTextBox2
 
    For Each NCampo2 In NCamposWhere
        SQL2 = SQL2 & "[" & NCampo & "] Like '*" & Replace(NTextBox2.Text, "'", "''") & "*' OR "
    Next NCampo2
 
 
    'Aqui pongo los criterios que hacen que se muestre los datos en el ListBox, por ambos campos a la vez (supongo está bien no lo tengo claro)
 
 
    NListBox.RowSource = "SELECT * FROM [" & NTabla & "] WHERE " & Mid(SQL, 1, Len(SQL) - 3)
    NListBox.RowSource = "SELECT * FROM [" & NTabla & "] WHERE " & Mid(SQL2, 1, Len(SQL2) - 3)
 
 
    Exit Sub
 
    'Este es el Set.Focus que no está funcionando, "BUSQUEDA_ISIN" es el nombre del formulario, "ISIN_a_BUSCAR" es el nombre del NTextBox1
 
    Forms!Busqueda_ISIN!ISIN_a_BUSCAR.SetFocus
 
 
ManipulaError:
 
 
    MsgBox Err.Description, vbCritical, "Avíso"
 
 
End Sub

Luego esta función la agrego en el NTextBox1, propiedades _AfterUpdate() usando un Call

1
2
3
4
5
6
7
8
Private Sub ISIN_a_BUSCAR_AfterUpdate()
 
 
    Call Buscar(ISIN_a_BUSCAR, Tipo_de_Registro, NListBox, "Mi_Consulta", "ISIN")
 
     'recordar: ISIN_a_BUSCAR es NTextBox1 y Tipo_de_Registro es NTextBox2
 
End Sub
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

Error con SetFocus en Formulario con ListBox

Publicado por Anonimo (3316 intervenciones) el 09/09/2022 17:40:20
Tal como está planteado solo filtrara por una condición (la última)

NListBox.RowSource = "SELECT * FROM [" & NTabla & "] WHERE " & Mid(SQL, 1, Len(SQL) - 3)
NListBox.RowSource = "SELECT * FROM [" & NTabla & "] WHERE " & Mid(SQL2, 1, Len(SQL2) - 3)

Hay que unir ambas condiciones (And si se tiene que cumplir ambas OR si basta que se cumpla una de ellas)

NListBox.RowSource = "SELECT * FROM [" & NTabla & "] WHERE " & Mid(SQL, 1, Len(SQL) - 3) & " AND " & Mid(SQL2, 1, Len(SQL2) - 3)

Si las originales trabajan bien de forma independiente, la unión de ambas condiciones también lo hará.

El set focus has de hacerlo en dos pasos:

1.- Foco al formulario
2.- Foco al campo

Si se está en el mismo formulario (foco a otro campo del formulario) deberá funcionar solo con el paso 2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error con SetFocus en Formulario con ListBox

Publicado por Nelson (3 intervenciones) el 09/09/2022 22:51:52
Gracias por tu pronta respuesta.
El lunes lo intento y comento si pude adaptar la solución que me indicas.
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

Error con SetFocus en Formulario con ListBox

Publicado por Eduardo (317 intervenciones) el 09/09/2022 21:58:28
Debe unirlas con AND o OR, es lo más lógico OR cuando se utiliza LIKE. Le recomiendo ver mi video sobre consultas y filtros avanzados en https://www.youtube.com/watch?v=Bwg4KlJEkX4&ab_channel=EduardoP%C3%A9rezFern%C3%A1ndez

Estudie especialmente el ejemplo "Filtro con cuadro de lista" ajuste las opciones "Búsqueda" active Con LIKE ", "Operador" active OR.

Estudie las funciones le servirán para todos los formularios. Si utiliza ParamArray() queda limitado al nombre de los campos del formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error con SetFocus en Formulario con ListBox

Publicado por Nelson (3 intervenciones) el 09/09/2022 22:53:01
Muchas gracias!
Veré el vídeo y en lo que haga la prueba comento aquí en foro como terminó quedando el código para que otra persona pueda usarlo.
Gracias nuevamente
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