Visual Basic para Aplicaciones - Condiciones Where o Having en campos multivalor

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Condiciones Where o Having en campos multivalor

Publicado por Juan Fernando (1 intervención) el 10/01/2016 17:53:31
Hola a todos,

Siempre consulto el foro cuando tengo alguna duda con respecto a la sintaxis en VBA o para tantísimas preguntas que se pueden ocurrir en el camino cuando se está construyendo una aplicación.

Esta vez no encuentro la respuesta y después de haber luchado por mucho tiempo sin llegar a ninguna parte quisiera pedir su ayuda.

Mi BD se está construyendo en Access y es un gestor documental de un equipo juridico en donde un documento puede ser encontrado con la ayuda de un motor de búsqueda. Mi formulario motor de búsqueda tiene 4 tipos de campos : texto, texto con lista desplegable, texto con lista desplegable multivalor y fecha.

Mi problema surgió con los campos multivalor, que ya me habían solucionado la vida para otras cosas...

Mi motor de búsqueda esta construido sobre una condición WHERE que va a buscar la información en una consulta principal pero access me lanza este mensaje :

"El campo de múltiples valores «[EntidadDestinataria]» no puede ser utilizado en una cláusula WHERE o HAVING"

Los campos de valor múltiple son SectorResponsable, EntidadDestinataria, Autoridad, Ley y AutorNombre. En el motor de búsqueda debo poder escribir una palabra y la aplicación debe encontrar los documentos que tengan esa palabra aunque en su campo se encuentren 2, 3 ó mas palabras distintas unidas por punto y coma en el campo multivaor.

Mi código para motor de búsqueda es el siguiente.

Private Sub btnOpLista_Click

Me.FormularioListaResultados.Form.RecordSource = "SELECT * FROM ConsultaPrincipal " & BuildFilter

Me.FormularioListaResultados.Requery

End sub

Private Function BuildFilter() As Variant


Dim varWhere As Variant
Dim varItem As Variant
Dim intIndex As Integer

varWhere = Null ' Filtro principal

If Me.TipoDocumento > "" Then
varWhere = varWhere & "[TipoDocumento] LIKE """ & Me.TipoDocumento & """ AND "
End If

If Me.Tema > "" Then
varWhere = varWhere & "[Tema] LIKE """ & Me.Tema & """ AND "
End If

If Me.Titulo > "" Then
varWhere = varWhere & "[Titulo] LIKE ""*" & Me.Titulo & "*"" AND "
End If

If Me.PalabrasClave > "" Then
varWhere = varWhere & "[PalabrasClave] LIKE ""*" & Me.PalabrasClave & "*"" AND "
End If

If Me.Ini_FechaDocumento > "" Then
varWhere = varWhere & "[FechaDocumento] >= #" & Format(Me.Ini_FechaDocumento, "mm-dd-yyyy") & "# AND "
End If

If Me.Fin_FechaDocumento > "" Then
varWhere = varWhere & "[FechaDocumento] <= #" & Format(Me.Fin_FechaDocument0, "mm-dd-yyyy") & "# AND "
End If


If Me.SectorResponsable > "" Then
varWhere = varWhere & "[SectorResponsable] LIKE """ & Me.SectorResponsable & "*"" AND "
End If


If Me.EntidadDestiantaria > "" Then
varWhere = varWhere & "[EntidadDestiantaria] LIKE """ & Me.EntidadDestiantaria & """ AND "
End If


If Me.Autoridad > "" Then
varWhere = varWhere & "[Autordad] LIKE """ & Me.Autordad & """ AND "
End If


If Me.Ley > "" Then
varWhere = varWhere & "[Ley] LIKE """ & Me.Ley & """ AND "
End If


If Me.ArticuloDesarrollado > "" Then
varWhere = varWhere & "[ArticuloDesarrollado] LIKE ""*" & Me.ArticuloDesarrollado & "*"" AND "
End If

If Me.NombreAutor > "" Then
varWhere = varWhere & "[NombreAutor] LIKE """ & Me.NombreAutor & """ AND "
End If


If IsNull(varWhere) Then
varWhere = ""
Else
varWhere = "WHERE " & varWhere


If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If
End If

BuildFilter = varWhere

End Function

_________

A todos mil gracias por su ayuda.
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