Solicitar el parámetro de valores separados de fecha y hora?

9

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.

ingrese la descripción de la imagen aquí

Usando el lenguaje SQL, creo que me gustaría una combinación interna del rango de fechas y el rango de tiempo (el centro):

ingrese la descripción de la imagen aquí

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 expertregla para obtener los datos que estoy buscando? ¿Hay alguna otra forma en que pueda hacer esto? ¿Quizás un subinforme?

YetAnotherRandomUser
fuente
1
Puede ser demasiado tarde, ya que esta Q tiene una semana de antigüedad. Lo reescribiría como entradas de muestra, salida requerida y su mejor intento de solución (sé que como desarrollador CR confía en muchos widgets integrados, lo que hace que la publicación sea más difícil). Pero como es, no puedo visualizar cuál es el problema que estás tratando de resolver específicamente. Si dice "Estoy obteniendo 2017-05-12.00: 00: 00Z pero quiero 2017-05-12.23: 59: 59", entonces creo que a mucha gente le resultaría más fácil ayudar. Buena suerte.
shellter
1
Una solución simple quizás sea crear una vista de base de datos en MS SQL que apunte a la otra tabla donde el informe obtiene los datos, pero dígale que solo obtenga los valores aquí, la [hora] HHestá entre las 2 PM y las 10 PM usando la DATEPARTfunción. Entonces, por ejemplo, sin ser una columna explícita usando SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22en la vista y luego apunte el select expertinforme 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.
Pimp Juice IT
1
Por lo tanto, para que quede clara la consulta SQL, es posible que desee jugar como una vista SQL o un objeto de comando CR SQL SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22y puede ser específico de la columna con la consulta en la vista SQL, select column1, column2 FROM ~etc. en lugar de *.
Pimp Juice IT
1
Mi ejemplo fue un ejemplo específico. Quiero permitir que el usuario determine las horas de inicio y finalización, por eso mencioné los parámetros. No sé mucho acerca de las Vistas SQL, pero supongo que si pego algo así en algún lugar, está configurado estáticamente y el usuario que ejecuta el informe no puede cambiarlo sobre la marcha. Veré sobre hacer la pregunta más clara al respecto.
YetAnotherRandomUser
De acuerdo, eso no funcionaría si los usuarios eligen el rango de tiempo. Este puede ser un trabajo para un proceso almacenado quizás. Ya no tengo CR y ha pasado un año más o menos desde que me metí con él para probar cualquier cosa, pero pensé que podría ayudar con una posible solución de nivel SQL, suponiendo que pudieras configurar y configurar la porción CR para permitir que el TSQL lo haga el filtrado, etc. No estoy seguro de si podría construir un proceso almacenado y pasar los parámetros de tiempo de inicio y finalización y tener un indicador dinámico CR para esos valores, etc. pero pensé que al menos le daría algunas ideas ... Buena suerte sin importar.
Pimp Juice IT