Estoy trabajando con Crystal Reports 2016. La fuente de datos es MS SQL Server 2008 R2. Actualmente puedo solicitar al usuario un intervalo de fechas para mi informe utilizando un parámetro. También me gustaría agregar un aviso para un rango de tiempo. Usar una solicitud para un parámetro DateTime no hace lo que quiero. El rango de fechas seleccionará una ventana de días más grande, y el rango de tiempo seleccionará qué horas durante el día el informe mostrará los datos. El uso de un indicador de parámetro DateTime simplemente agrega precisión al día / hora de inicio y finalización del informe y no hace lo que quiero. Ambas indicaciones harán referencia al mismo registro DateTime en la base de datos.
Intenté agregar un segundo indicador de parámetros por separado por el tiempo justo, pero eso tiene el mismo resultado que cambiar el indicador de parámetros a un valor DateTime. Reitero: ese no es mi resultado deseado.
Como ejemplo concreto y específico, me gustaría utilizar datos que sean válidos para el 1 de septiembre y el 31 de octubre, donde lo que estoy informando ocurrió entre las 2 p. M. Y las 10 p. M. EST en cualquiera o todos esos días. Si tengo una selección de fecha y hora, puedo elegir el 1 de septiembre a las 2 p.m. y el 31 de octubre a las 10 p.m. Sin embargo, eso no es lo que estoy tratando de seleccionar.
Básicamente, seleccione los datos que ocurrieron en estos días entre las 2 p.m. y las 10 p.m. Donde la fecha de inicio y la fecha de finalización son seleccionables; y la hora de inicio y la hora de finalización son seleccionables.
Usando el lenguaje SQL, creo que me gustaría una combinación interna del rango de fechas y el rango de tiempo (el centro):
Un ejemplo completamente no relacionado pero similar; Este fenómeno es similar a las reuniones en Outlook. Podría (pero no debería) hacer una reunión realmente larga que comience en 1 día / hora, y termine en otro día / hora varios días después, pero debe hacer una reunión periódica para administrar adecuadamente su horario y el de sus habitaciones. Estoy buscando seleccionar registros de manera similar a una reunión periódica.
¿Cómo puedo elaborar una select expert
regla para obtener los datos que estoy buscando? ¿Hay alguna otra forma en que pueda hacer esto? ¿Quizás un subinforme?
fuente
HH
está entre las 2 PM y las 10 PM usando laDATEPART
función. Entonces, por ejemplo, sin ser una columna explícita usandoSELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
en la vista y luego apunte elselect expert
informe para obtener sus datos para los períodos de fecha seleccionados. Otra forma sería hacer que la misma consulta T-SQL sea un comando CR SQL, pero una vista SQL puede funcionar mucho mejor.SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
y puede ser específico de la columna con la consulta en la vista SQL,select column1, column2 FROM ~
etc. en lugar de*
.