Problema con operadores Lógicos

Soy nuevo en el uso del Access y espero que me puedasn ayudar..
Tengo una consulta a una base de datos que es actualizada a través de un formulario vía cuatros de textos empleando el siguiente código:
SELECT flora.ECOLOGIA, flora.Nombre_Cient
FROM flora
WHERE (((flora.ECOLOGIA) Like "*" & [forms]![ecologia]![tipo_1] & "*" And (flora.ECOLOGIA) Like "*" & [forms]![ecologia]![tipo_2] & "*"));
Esta busqueda se ejecuta a traves de un boton de comando cuyo codigo es:
Private Sub busqueda_Click()
Dim stdocname As String
stdocname = "b_genero"
DoCmd.OpenQuery stdocname, acNormal, acEdit
Me.Recalc
Exit_busqueda_Click:
Exit Sub
Hasta aquí no tengo ningún problema funciona muy bien, el problema radica cuando se requiere cambiar el operador lógico AND por OR desde un formulario, osea que el usuario defina (en el formulario) si es AND u OR. Lo he intentado bajo el siguiente código pero no me resulta..
SELECT flora.ECOLOGIA, flora.Nombre_Cient
FROM flora
WHERE (((flora.ECOLOGIA) Like "*" & [forms]![ecologia]![tipo_1] & "*" & [forms]![ecologia]![condicion] & (flora.ECOLOGIA) Like "*" & [forms]![ecologia]![tipo_2] & "*"));
Donde el cuadro de texto condición se llena con AND u OR dependiendo lo que defina el usuario.

1 Respuesta

Respuesta
1
El planteamiento que haces es genial, y es correcto en toda su extensión. Lo único que te falta es hacer montar adecuadamente la sentencia SQL.
Todo en la sentencia es correcto excepto que cuando le indicas la condición, esta debe ir entre comillas sencillas para que la cadena se interprete como texto.
el parametro -> & [forms]![ecologia]![condicion]
debes sustituirlo por -> " ' " & ...... & " ' "
Supongo que lo has entendido. Prueba y veras.
Felicidades por tu avanzado conocimiento sobre Access y Sql.
Hola de nuevo gracias por responderme, pero ya lo intente y no resulta, la expresión SQL no lee lo que esta entre comillas simples, no se que pasa pero cuando es llenado o no el resultado es toda la base de datos...
Existe una forma de reemplazar toda la sentencia SQL que se encuentra en la hoja de diseño de la consulta por una generada en el formulario en un cuadro de texto... ya que lo he problado en un cuadro de texto y SI LOGRO CONSTRUIR UNA sentencia que copiandola manual mente si obtengo los resultado que busco...
Gracias por todo
Efectivamente puedes montar la sentencia desde el formulario, pero tal como la tienes debe funcionar. Lo único que te falta es dar continuidad al string (la cadena).
Prueba con esta cadena:
Dim sql
sql ="SELECT flora.ECOLOGIA, flora.Nombre_Cient"
sql=sql & " FROM flora"
sql=sql & " WHERE flora.ECOLOGIA Like '*'" & [forms]![ecologia]![tipo_1] & "'*'"
sql=sql & "'" & [forms]![ecologia]![condicion] & "' & flora.ECOLOGIA Like '*' " & [forms]![ecologia]![tipo_2] & "'*'"
me.recordsource=sql
Para el código con el Debug del módulo y comprueba como se ha compuesto la cadena sql, trasladándola a la edición de las consultas.
Posiblemente te funcione, si no es así, varia los parámetros de las comillas hasta conseguirlo.
La cadena que forma la sentencia de sql la puedes formar desde cualquier evento con el código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas