Como evaluar un registro en access
Tengo un problema haber si me pueden ayudar.
Tengo una base de datos en la cual tengo un formulario en el cual se genera una consulta sql que busca los registros que están en una tabla para visualizarlo, pero los registros que contiene un # no me los muestra...
No se que puede estar pasando.
2 respuestas

Esta es una opción más corta y sin tanta vuelva.
TABLA
Tengo la tabla en donde los registros resaltados en el campo Apellidos contiene el carácter #.
CONSULTA
Observe el criterio Como "*[#]*", esto permite obtener los apellidos que contengan el caracter #.
RESULTADO DE LA CONSULTA
Da como resultado los 3 registros

Este es el código que utilizo en el botón de filtrar pero cuando introduzco un consumible que contiene # por ejemplo vidrio # 11 no me parece

Consulta = "SELECT Consulta_Buscar_Consumible.ITEM, Consulta_Buscar_Consumible.FECHA, Consulta_Buscar_Consumible.AREA, Consulta_Buscar_Consumible.GRUPO, Consulta_Buscar_Consumible.CARGO, Consulta_Buscar_Consumible.NOMBRE, Consulta_Buscar_Consumible.SECCIÓN, Consulta_Buscar_Consumible.DESCRIPCIÓN, Consulta_Buscar_Consumible.OBSERVACIÓN, Consulta_Buscar_Consumible.CANT, Consulta_Buscar_Consumible.CAMBIO "
Consulta = Consulta & "FROM Consulta_Buscar_Consumible "
Consulta = Consulta & "WHERE Consulta_Buscar_Consumible.DESCRIPCIÓN Like '*" & Me.Buscar_Consumible & "*' AND Consulta_Buscar_Consumible.AREA Like '*" & Me.Buscar_Area & "*' AND Consulta_Buscar_Consumible.GRUPO Like '*" & Me.Buscar_Grupo & "*' AND Consulta_Buscar_Consumible.FECHA BETWEEN #" & Format(Me.txtFechaInicial, "mm/dd/yyyy") & "# AND #" & Format(DateAdd("s", 86399, Me.txtFechaFinal), "mm/dd/yyyy hh:nn:ss") & "# "
Me.Lista_Consumibles.RowSource = Consulta

Este formulario, corresponde a una respuesta que respondí hace un tiempo:
Datos sin filrar:
Tengo en la columna "Producto" 3 campos que tienen el carácter # en diferente posición y tengo en la columna "CUENTA" palabra "SOCIOS". Al hacer clic en Botón del filtro obtengo:
Este es el código que hace el filtro:
Private Sub btnFiltrar_Click() 'Este algoritmo fue desarrollado por 'Eduardo Pérez Fernández y no es copia de la web 'Favor hacer referencia en sus proyectos, no cuesta nada 'Fecha 04/01/2020 ' 'NOTA: En principio se diseñó para tomar el contenido de ' campos de texto, pero se puede adaptar para combo box ' o ambos. Dim sFiltro As String Dim ctrl As Control Const conJetDate = "\#mm\/dd\/yyyy\#" 'El formato esperado para las fechas en una cadena de consulta JET. For Each ctrl In Me.Controls If ctrl.ControlType = acTextBox Then If ctrl.Value <> "" And ctrl.Tag <> "fecha" Then If ctrl.Value = "#" Then ctrl.Value = "[#]" End If sFiltro = sFiltro & ctrl.Tag & " LIKE '*" & ctrl.Value & "*'" & " OR " End If End If Next If sFiltro <> "" Then sFiltro = Left(sFiltro, Len(sFiltro) - 4) End If If IsDate(Me.fdesde) And IsDate(Me.fhasta) Then If sFiltro <> "" Then sFiltro = sFiltro & " AND fecha between " & _ Format(fdesde, conJetDate) & " AND " & Format(fhasta, conJetDate) Else sFiltro = "fecha between " & _ Format(fdesde, conJetDate) & " AND " & Format(fhasta, conJetDate) End If End If Me.frmSubContabilidad.Form.Filter = sFiltro ' Le decimos al subformulario que active el filtro ' que previamente hemos asignado. Me.frmSubContabilidad.Form.FilterOn = True
En el formulario se utilizar la propiedad "Información adicional" el nombre del campo, excepto, las fechas solo tienen el nombre "fecha". Con este sistema no importa la cantidad de campos a filtrar y reduce en un 50% el código. Trate de adaptarlo, pero tenga cuidado con los cuadros combinados al hacer referencia a la columna que se debe tomar para la consulta. Le recomiendo no utilizar caracteres especiales en los datos, son un dolor de cabeza.
Ahora para poderle colaborar necesitaría la base de datos con algunos datos ficticios, mi correo es eperezfer@hotmail.com, favor en el asunto hacer referencia a su consulta.

Algo más completo con una función para validar los caracteres especiales
Public Function busca_especial(mtexto As String) As String If InStr(1, mtexto, "?") > 0 Then busca_especial = Replace(mtexto, "?", "[?]") ElseIf InStr(1, mtexto, "#") > 0 Then busca_especial = Replace(mtexto, "#", "[#]") ElseIf InStr(1, mtexto, "%") > 0 Then busca_especial = Replace(mtexto, "%", "[%]") ElseIf InStr(1, mtexto, "!") > 0 Then busca_especial = Replace(mtexto, "!", "[!]") End If End Function
CÓDIGO DE LA FUNCIÓN
Public Function busca_especial(mtexto As String) As String If InStr(1, mtexto, "?") > 0 Then busca_especial = Replace(mtexto, "?", "[?]") ElseIf InStr(1, mtexto, "#") > 0 Then busca_especial = Replace(mtexto, "#", "[#]") ElseIf InStr(1, mtexto, "%") > 0 Then busca_especial = Replace(mtexto, "%", "[%]") ElseIf InStr(1, mtexto, "!") > 0 Then busca_especial = Replace(mtexto, "!", "[!]") End If End Function
Puede utilizar esta función en sus consultas SQL.

Perdón copie el código de la función 2 veces falta el código que llama la función
Private Sub btnFiltrar_Click() 'Este algoritmo fue desarrollado por 'Eduardo Pérez Fernández y no es copia de la web 'Favor hacer referencia en sus proyectos, no cuesta nada 'Fecha modificación: 19/06/2021 ' 'NOTA: En principio se diseñó para tomar el contenido de ' campos de texto, pero se puede adaptar para combo box ' o ambos. 'Requiere de la función: busca_especial() Dim sFiltro As String Dim ctrl As Control Const conJetDate = "\#mm\/dd\/yyyy\#" 'El formato esperado para las fechas en una cadena de consulta JET. For Each ctrl In Me.Controls If ctrl.ControlType = acTextBox Then If ctrl.Value <> "" And ctrl.Tag <> "fecha" Then ctrl.Value = busca_especial(ctrl.Value) ' Llamo la función para validar caracteres especiales sFiltro = sFiltro & ctrl.Tag & " LIKE '*" & ctrl.Value & "*'" & " OR " End If End If Next If sFiltro <> "" Then sFiltro = Left(sFiltro, Len(sFiltro) - 4) End If If IsDate(Me.fdesde) And IsDate(Me.fhasta) Then If sFiltro <> "" Then sFiltro = sFiltro & " AND fecha between " & _ Format(fdesde, conJetDate) & " AND " & Format(fhasta, conJetDate) Else sFiltro = "fecha between " & _ Format(fdesde, conJetDate) & " AND " & Format(fhasta, conJetDate) End If End If Me.frmSubContabilidad.Form.Filter = sFiltro ' Le decimos al subformulario que active el filtro ' que previamente hemos asignado. Me.frmSubContabilidad.Form.FilterOn = True End Sub
- Compartir respuesta


Voy a intentar ser lo más didáctico posible. El sistema entiende que cuando pones una # es que vas a "hablar" de fechas. Por otro lado, no dices donde está o puede estar el dígito #. Así que, si tengo una tabla Clientes donde puedes ver que en los registros 1, 6 y 12, el nombre del cliente tiene un dígito #.
Construyo una consulta Consulta1 como ves en la imagen, a la que le he añadido una campo Bien
Ahora, si tengo el formulario Clientes
Cuando aprieto el botón
El código del botón, aunque no sería necesario, ya que se puede poner en cualquier evento, es
Private Sub Comando15_Click() Me.RecordSource = "Select * from consulta1 where bien like ""*33*""" End Sub
- Compartir respuesta
Gracias Julián, pero no logró solucionar el problema - Juan Meriño

Lo dicho, eres gilipollas - Julián González Cabarcos