
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:
Luego esta función la agrego en el NTextBox1, propiedades _AfterUpdate() usando un Call
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


0