Access - Consulta campo TRUE/FALSE

 
Vista:

Consulta campo TRUE/FALSE

Publicado por Christian D. (1 intervención) el 24/05/2005 18:24:25
Hola,
Tengo una página en ASP que se conecta a una base de datos ACCESS y realiza una consulta.
El problema que tengo es que la consulta no considera una condición de la claúsula WHERE que hace referencia a un campo del tipo booleano. ; ... WHERE (((instituciones.Envioemail)=True)).
La consulta completa y definición de conexión a la base de datos es:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bd\cartola_clientes.mdb"))
sql_institucion = "SELECT DISTINCT instituciones.Cuerpo, instituciones.[e-mail], instituciones.superintendente, instituciones.cargo FROM Cartola INNER JOIN instituciones ON Cartola.Institucion = instituciones.Cuerpo where instituciones.[e-mail] not like '' and (Cartola.Detalle Not Like '5*' and Cartola.[Fecha movimiento] > #"&inicio&"#) and Cartola.[Fecha movimiento] < #"&fin&"# and (((instituciones.Envioemail)=True)) order by cuerpo"

Existen registros que cumplen TODAS las condiciones del WHERE. Pero no devuelve ningún registro la consuta debido a esto: "..(((instituciones.Envioemail)=True))...".

Qué puede ser lo que está pasando???

Gracias

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
Imágen de perfil de Alejandro

Problema con la comparación de campos booleanos en consulta ASP

Publicado por Alejandro (4142 intervenciones) el 02/06/2023 22:01:06
El problema que estás experimentando puede deberse a la forma en que Access maneja los valores booleanos en las consultas SQL. En Access, el valor "True" se representa como -1, no como 1. Por lo tanto, al comparar un campo booleano en una cláusula WHERE, es posible que necesites usar el valor -1 en lugar de "True".

Para solucionar este problema, puedes ajustar tu consulta modificando la comparación del campo "Envioemail" en la cláusula WHERE. Aquí está la consulta ajustada:

1
sql_institucion = "SELECT DISTINCT instituciones.Cuerpo, instituciones.[e-mail], instituciones.superintendente, instituciones.cargo FROM Cartola INNER JOIN instituciones ON Cartola.Institucion = instituciones.Cuerpo WHERE instituciones.[e-mail] <> '' AND (Cartola.Detalle Not Like '5*' AND Cartola.[Fecha movimiento] > #" & inicio & "#) AND Cartola.[Fecha movimiento] < #" & fin & "# AND instituciones.Envioemail = -1 ORDER BY cuerpo"

En esta consulta, reemplacé la condición "(((instituciones.Envioemail)=True))" por "instituciones.Envioemail = -1". Esto debería solucionar el problema y devolver los registros que cumplan con la condición del campo booleano.

Recuerda que también he cambiado "instituciones.[e-mail] not like ''" por "instituciones.[e-mail] <> ''" para mejorar la claridad y consistencia de la consulta.

Espero que esto resuelva tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar