Saltar al contenido

Problema con consulta sql usando Like


Recommended Posts

publicado

Hola de nuevo.

Llevo mucho rato probando y leyendo y no veo manera de salir de esta. Tengo una consulta sql que construyo concatenando Textbox que no me acabo de funcionar bien. 

Quiero usar Like y la "*" y no veo forma donde ponerla. La ponga donde la ponga o me da error de sintaxis o otros errores. Tal y como tengo el código solo me funciona si el valor que pongo en el Textbox es EXACTO, pero yo quiero que con solo poner parte de la cadena que filtro sea suficiente, por eso intento usar Like.

Os agradezco la ayuda, en definitiva necesito saber como construir la consulta usando "*".

Este es el código:

Private Sub CommandButton1_Click()
'macro que filtra los datos de los textbox en el listbox
Dim filtro As String
If TextBox1 <> "" Then filtro = "[PERIODO] Like '" & TextBox1 & "'"
If TextBox2 <> "" Then filtro = filtro & " AND [CODIGO_OT] Like '" & TextBox2 & "'"
If TextBox3 <> "" Then filtro = filtro & " AND [DESCRIPCION_OT] Like '" & TextBox3 & "'"
If TextBox4 <> "" Then filtro = filtro & " AND [CENTRO_CONTABLE] Like '" & TextBox4 & "'"
If TextBox5 <> "" Then filtro = filtro & " AND [NRO_COMPROBANTE] Like '" & TextBox5 & "'"
If TextBox6 <> "" Then filtro = filtro & " AND [AGRUPACION] Like '" & TextBox6 & "'"
If TextBox7 <> "" Then filtro = filtro & " AND [IMPORTE_DEBE] Like '" & TextBox7 & "'"
If TextBox8 <> "" Then filtro = filtro & " AND [IMPORTE_HABER] Like '" & TextBox8 & "'"
If TextBox9 <> "" Then filtro = filtro & " AND [CONCEPTO] Like '" & TextBox9 & "'"
If TextBox10 <> "" Then filtro = filtro & " AND [GRUPO] Like '" & TextBox10 & "'"
'comprobamos no hayamos puesto AND al principio de la consulta sql
If Left(filtro, 4) = " AND" Then filtro = Mid(filtro, 5, Len(filtro))
If filtro = "" Then Exit Sub
ListBox1.Clear
'consulta sql
Conexión
Sql = "Select [PERIODO],[CODIGO_OT],[DESCRIPCION_OT],[CENTRO_CONTABLE],[NRO_COMPROBANTE]," & _
"[AGRUPACION],[IMPORTE_DEBE],[IMPORTE_HABER],[CONCEPTO],[GRUPO]" & _
"From Contable Where " & filtro
Rst.Open Sql, Conn, 3, 3, 1
If Rst.EOF = False Then ListBox1.Column = Rst.GetRows
Rst.Close
Set Rst = Nothing
Conn.Close
Set Conn = Nothing
End Sub

Muchas gracias.

Moisés.

 

publicado

En SQL no se usa "*" despues de un like debes utilizar "%". Elemplo : 

SELECT [Nombre_Completo],[Edad] FROM Estudiantes WHERE Nombre_Completo like '%Pablo%'

Saludos.

publicado

@AlexanderS, muchas gracias.

No se por qué, pero estaba encabezonado con "*". Ahora ya funciona como quería.

Muchas gracias.

Copio el código....

Sub Filtrar_listBox()
'macro que filtra los datos de los textbox en el listbox
Dim filtro As String
ComboBox1 = Empty
If TextBox1 <> "" Then filtro = "[PERIODO] Like '%" & TextBox1 & "%'"
If TextBox2 <> "" Then filtro = filtro & " AND [CODIGO_OT] Like '%" & TextBox2 & "%'"
If TextBox3 <> "" Then filtro = filtro & " AND [DESCRIPCION_OT] Like '%" & TextBox3 & "%'"
If TextBox4 <> "" Then filtro = filtro & " AND [CENTRO_CONTABLE] Like '%" & TextBox4 & "%'"
If TextBox5 <> "" Then filtro = filtro & " AND [NRO_COMPROBANTE] Like '%" & TextBox5 & "%'"
If TextBox6 <> "" Then filtro = filtro & " AND [AGRUPACION] Like '%" & TextBox6 & "%'"
If TextBox7 <> "" Then filtro = filtro & " AND [IMPORTE_DEBE] Like '%" & TextBox7 & "%'"
If TextBox8 <> "" Then filtro = filtro & " AND [IMPORTE_HABER] Like '%" & TextBox8 & "%'"
If TextBox9 <> "" Then filtro = filtro & " AND [CONCEPTO] Like '%" & TextBox9 & "%'"
If TextBox10 <> "" Then filtro = filtro & " AND [GRUPO] Like '%" & TextBox10 & "%'"
'comprobamos no hayamos puesto AND al principio de la consulta sql
If Left(filtro, 4) = " AND" Then filtro = Mid(filtro, 5, Len(filtro))
If filtro = "" Then Exit Sub
ListBox1.Clear
'consulta sql
Conexión
Sql = "Select [PERIODO],[CODIGO_OT],[DESCRIPCION_OT],[CENTRO_CONTABLE],[NRO_COMPROBANTE]," & _
"[AGRUPACION],[IMPORTE_DEBE],[IMPORTE_HABER],[CONCEPTO],[GRUPO]" & _
"From Contable Where " & filtro
Rst.Open Sql, Conn, 3, 3, 1
If Rst.EOF = False Then ListBox1.Column = Rst.GetRows
Rst.Close
Set Rst = Nothing
Conn.Close
Set Conn = Nothing
End Sub

Saludos,

Moisés.

publicado

Y adelantándome a tu próximo problema, para comparar fechas en Access, estas deben ir entre almohadillas:

Ejemplo para seleccionar la fecha 10/08/2018:

Select * from tabla where fecha = #10/08/2018#

 

.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.