Estou trabalhando com o Crystal Reports 2016. A fonte de dados é o MS SQL Server 2008 R2. Atualmente, posso solicitar ao usuário um intervalo de datas para o meu relatório usando um parâmetro Eu também gostaria de adicionar um prompt para um intervalo de tempo. Usar um prompt para um parâmetro DateTime não faz o que eu quero. O período selecionará uma janela maior de dias e o período selecionará os horários durante o dia em que o relatório mostrará os dados. O uso de um prompt de parâmetro DateTime simplesmente adiciona precisão ao dia / hora inicial e final do relatório e não faz o que eu quero. Os dois prompts se referirão ao mesmo registro DateTime no banco de dados.
Tentei adicionar um segundo prompt de parâmetro separado por um tempo justo, mas isso tem o mesmo resultado que a alteração do prompt de parâmetro para um valor DateTime. Vou reiterar: esse não é o meu resultado desejado.
Como exemplo concreto e específico, eu gostaria de usar dados válidos de 1º de setembro a 31 de outubro, onde o que estou relatando aconteceu entre 14h e 22h EST, em um ou em todos esses dias. Se eu tiver uma seleção de Data e hora, posso escolher 1 de setembro, 14h e 31 de outubro, 22h. No entanto, não é isso que estou tentando selecionar.
Basicamente, selecione os dados que ocorreram nesses dias entre as 14h e as 22h. Onde a data inicial e a data final são selecionáveis; e o horário de início e de término são selecionáveis.
Usando linguagem SQL, acho que gostaria de uma junção interna do período e do período (o centro):
Um exemplo completamente não relacionado, mas semelhante; esse fenômeno é semelhante às reuniões no Outlook. Você pode (mas não deve) fazer uma reunião realmente longa, que começa em 1 dia / hora e termina em outro dia / hora vários dias depois, mas você deve fazer uma reunião recorrente para gerenciar adequadamente a agenda de seus e de seus quartos. Estou procurando selecionar registros de maneira semelhante a uma reunião recorrente.
Como posso criar uma select expert
regra para obter os dados que estou procurando? Existe alguma outra maneira de fazer isso? Talvez um sub-relatório?
fonte
HH
é entre 14 e 22 horas usando aDATEPART
função Por exemplo, sem ser explícitoSELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
na coluna usando na exibição e, em seguida, aponte oselect expert
relatório para obter seus dados para períodos selecionados. Outra maneira seria transformar a mesma consulta T-SQL em um comando CR SQL, mas uma exibição SQL pode ter um desempenho muito melhor.SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
você pode ser específico da coluna com a consulta na visualização SQL,select column1, column2 FROM ~
etc., em vez de*
.