Sto lavorando con Crystal Reports 2016. L'origine dati è MS SQL Server 2008 R2. Sono attualmente in grado di richiedere all'utente un intervallo di date per il mio rapporto utilizzando un parametro. Vorrei anche aggiungere un prompt per un intervallo di tempo. L'uso di un prompt per un parametro DateTime non fa quello che voglio. L'intervallo di date selezionerà una finestra di giorni più ampia e l'intervallo di tempo selezionerà gli orari durante il giorno in cui il rapporto mostrerà i dati. L'uso di un prompt dei parametri DateTime aggiunge semplicemente precisione all'inizio e alla fine del giorno / ora del report e non fa ciò che desidero. Entrambi i prompt faranno riferimento allo stesso record DateTime nel database.
Ho provato ad aggiungere un secondo prompt dei parametri separato per il momento giusto, ma questo ha lo stesso risultato della modifica del prompt dei parametri in un valore DateTime. Lo ripeterò: non è il risultato desiderato.
Come esempio concreto, specifico, vorrei utilizzare dati validi per il periodo dal 1 ° settembre al 31 ottobre in cui la cosa che sto segnalando è avvenuta tra le 14:00 e le 22:00 EST in uno o tutti quei giorni. Se ho una selezione DateTime, posso scegliere 1 settembre, 14:00 e 31 ottobre, 22:00. Tuttavia, non è quello che sto cercando di selezionare.
Fondamentalmente, selezionare i dati che si sono verificati in questi giorni tra le 14:00 e le 22:00. Dove sono selezionabili la data di inizio e di fine; e l'ora di inizio e l'ora di fine sono selezionabili.
Utilizzando SQL parlance, penso che vorrei un join interno dell'intervallo di date e dell'intervallo di tempo (quello centrale):
Un esempio completamente indipendente ma simile; questo fenomeno è simile alle riunioni in Outlook. Potresti (ma non dovresti) organizzare una riunione davvero lunga che inizia 1 giorno / ora e termina in un altro giorno / ora alcuni giorni dopo, ma dovresti organizzare una riunione ricorrente per gestire correttamente il programma della tua stanza. Sto cercando di selezionare i record in modo simile a una riunione ricorrente.
Come posso creare una select expert
regola per ottenere i dati che sto cercando? C'è un altro modo in cui posso farlo? Forse un sottoreport?
HH
è tra le 14:00 e le 22:00 utilizzando la DATEPART
funzione. Quindi, ad esempio, senza essere esplicito SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
nella colonna usando nella vista e quindi punta il select expert
rapporto per ottenere i dati per i periodi di data selezionati da esso. Un altro modo sarebbe quello di rendere la stessa query T-SQL un comando CR CR, ma una visualizzazione SQL potrebbe funzionare molto meglio.
SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
e puoi essere specifico della colonna con la query nella vista SQL, ecc select column1, column2 FROM ~
. Invece di *
.