Buscar por dos criterios |
Responder |
Autor | ||||||||||||||
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Tema: Buscar por dos criterios Enviado: 02/Julio/2020 a las 20:33 |
|||||||||||||
Buenas. Con la consulta siguiente (C_Trimestre), basada en la tabla CORREOS, deseo que me muestre los ficheros con IDENTIFICADOR 17 o 22 y que estén dentro de la [Fecha] 1/4/2020 y 30/6/2020. En Criterio: [IDENTIFICADOR] igual a 17 O 22 En Criterio: [Fecha] Entre #1/4/2020# y #30/6/2020# Esto funciona perfectamente no mostrando ningún fichero, pues en ese periodo no hay ningún registro con IDENTIFICADOR 17 o 22 Ahora mediante el siguiente código VB deseo que realice lo mismo: "C_Trimestre", "[IDENTIFICADOR]=17" & "OR [IDENTIFICADOR]=22" & "AND Fecha between #" & Format(vdesde, "mm/dd/yyyy") & "# AND #" & Format(vHasta, "mm/dd/yyyy") & " # " Donde vdesde = 1/4/2020 y vHasta = 30/06/2020 y el resultado no es el mismo. Con este código me muestra los 2 registros que hay en Enero del IDENTIFICADOR 17 Que estoy haciendo mal? Gracias. |
||||||||||||||
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 02/Julio/2020 a las 21:46 | |||||||||||||
Hola!
"C_Trimestre", "[IDENTIFICADOR]=17" & "OR [IDENTIFICADOR]=22" & "AND Fecha between #" & Format(vdesde, "mm/dd/yyyy") & "# AND #" & Format(vHasta, "mm/dd/yyyy") & " # " No entiendo lo que quieres hacer! |
||||||||||||||
Un Saludo.
|
||||||||||||||
VIMIPAS
Colaborador Unido: 06/Enero/2006 Localización: ESPAÑA Estado: Sin conexión Puntos: 5462 |
Enviado: 02/Julio/2020 a las 23:25 | |||||||||||||
Hola buenas noches. Con esta simulación propia en una tabla para la ocasión y estos registros:
Hago la consulta C_Trimestre de la misma forma que Nomada, resultado: ningún registro. Esta es la SQL de la consulta: SELECT CORREOS.identificador, CORREOS.fecha FROM CORREOS WHERE (((CORREOS.identificador)=17 Or (CORREOS.identificador)=22) AND ((CORREOS.fecha) Between [VDESDE] And [VHASTA])); Siguiendo con mis pruebas, monto un formulario con todos los registros y pongo dos botones para ejecutar en VBA. Estos: Private Sub EJECUTARCONSULTA_Click() DoCmd.OpenQuery "c_trimestre", , acReadOnly ‘Resultado, el mismo que cuando ejecuto la consulta en Consultas, vista diseño y ejecutar (me pide los valores de fechas y los pongo. End Sub Private Sub EJECUTARsql_Click() Me.RecordSource = "SELECT CORREOS.identificador, CORREOS.fecha FROM CORREOS WHERE (((CORREOS.identificador)=17 Or (CORREOS.identificador)=22) AND ((CORREOS.fecha) Between [VDESDE] And [VHASTA]));" ‘Resultado, el mismo que cuando ejecuto la consulta en Consultas, vista diseño y ejecutar (me pide los valores de fechas y los pongo. End Sub Mi pregunta a Nomada es: ¿Estás seguro de que esto que estás poniendo es código VB?: "C_Trimestre",
"[IDENTIFICADOR]=17" & "OR [IDENTIFICADOR]=22" &
"AND Fecha between #" & Format(vdesde, "mm/dd/yyyy")
& "# AND #" & Format(vHasta, "mm/dd/yyyy") &
" # " Saludos. |
||||||||||||||
Gracias
|
||||||||||||||
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 03/Julio/2020 a las 08:07 | |||||||||||||
Realmente el código completo de VB es el que muestro a continuación, donde deseo filtrar por el campo "IDENTIFICADOR" y los campos "vDesde" y "vHasta": vTrimestre = DSum("T_Gastos", "C_Trimestre", "[IDENTIFICADOR]=17" & "OR [IDENTIFICADOR]=22" & "AND Fecha between #" & Format(vdesde, "mm/dd/yyyy") & "# AND #" & Format(vHasta, "mm/dd/yyyy") & " # ") Pues con este código, pidiendo el segundo trimestre, me aparecen los registros con "IDENTIFICADOR" 17 de Enero. Observo como en el código SQL hay unos paréntesis antes y después del condicional "AND", y creo que ahí puede estar el error: ...WHERE (((CORREOS.identificador)=17 Or (CORREOS.identificador)=22) AND ((CORREOS.fecha) Between [VDESDE] And [VHASTA])); Resumiendo. Deseo obtener los registros con IDENTIFICADOR 17 o 22 que estén dentro del segundo trimestre. Gracias. Pda: Este código si funciona: vTrimestre = DSum("T_Gastos", "C_Trimestre", "[IDENTIFICADOR]=17" & "AND COM_FechaFact between #" & Format(vdesde, "mm/dd/yyyy") & "# AND #" & Format(vHasta, "mm/dd/yyyy") & " # " & "OR [IDENTIFICADOR]=22" & "AND COM_FechaFact between #" & Format(vdesde, "mm/dd/yyyy") & "# AND #" & Format(vHasta, "mm/dd/yyyy") & " # ") pero no se podría reducir un poco?
Editado por Nomada - 03/Julio/2020 a las 08:18 |
||||||||||||||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 03/Julio/2020 a las 08:39 | |||||||||||||
En vez de pelearte con los campos debes entender lo que estas escribiendo y como lo interpreta 'el chino'.
¿Qué hace ....? Condicion1 OR Condicion2 AND Condicion3 .... que no hace lo mismo que: (Condicion1 OR Condicion2) AND Condicion3 Por cierto, para escribir mucho menos, y que sean más legibles las condiciones WHERE son muy útiles las cláusulas IN: WHERE Campo = 1 OR Campo = 2 OR Campo = 3 se puede dejar en: WHERE Campo IN (1, 2, 3)
Editado por Mihura - 03/Julio/2020 a las 08:40 |
||||||||||||||
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 03/Julio/2020 a las 10:15 | |||||||||||||
Gracias Mihura. Esto es precisamente lo que deseo: (Condicion1 OR Condicion2) AND Condicion3 |
||||||||||||||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 03/Julio/2020 a las 11:55 | |||||||||||||
¿No ves ningún parecido?
WHERE (((CORREOS.identificador)=17 Or (CORREOS.identificador)=22) AND y WHERE Campo = 1 OR Campo = 2 OR Campo = 3 La solución aplicada abajo, vale para arriba. |
||||||||||||||
Nomada
Colaborador Unido: 03/Julio/2011 Localización: España Estado: Sin conexión Puntos: 1719 |
Enviado: 04/Julio/2020 a las 12:23 | |||||||||||||
Gracias Mihura. Perfecto. Este hilo se puede cerrar satisfactoriamente. Saludos.
|
||||||||||||||
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |