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.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
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.