Je travaille avec Crystal Reports 2016. La source de données est MS SQL Server 2008 R2. Je suis actuellement en mesure de demander à l'utilisateur une plage de dates pour mon rapport à l'aide d'un paramètre. Je voudrais également ajouter une invite pour une plage de temps. L'utilisation d'une invite pour un paramètre DateTime ne fait pas ce que je veux. La plage de dates va sélectionner une plus grande fenêtre de jours et la plage de temps sélectionnera les heures de la journée pendant lesquelles le rapport affichera les données. L'utilisation d'une invite de paramètre DateTime ajoute simplement de la précision au jour et à l'heure de début et de fin du rapport et ne fait pas ce que je veux. Les deux invites feront référence au même enregistrement DateTime dans la base de données.
J'ai essayé d'ajouter une deuxième invite de paramètre distincte pour le temps juste, mais cela a le même résultat que de changer l'invite de paramètre en une valeur DateTime. Je le répète: ce n'est pas mon résultat souhaité.
À titre d'exemple concret et précis, je voudrais utiliser des données valables pour la période du 1er septembre au 31 octobre où la chose sur laquelle je fais rapport s'est produite entre 14 h et 22 h HNE un ou plusieurs de ces jours. Si j'ai une sélection DateTime, je peux choisir le 1er septembre à 14 h et le 31 octobre à 22 h. Cependant, ce n'est pas ce que j'essaie de sélectionner.
Fondamentalement, sélectionnez les données qui se sont produites ces jours-là entre 14 h et 22 h. Où la date de début et la date de fin sont sélectionnables; et l'heure de début et l'heure de fin sont sélectionnables.
En utilisant le langage SQL, je pense que je voudrais une jointure interne de la plage de dates et de la plage de temps (celle du centre):
Un exemple complètement indépendant mais similaire; ce phénomène est similaire aux réunions dans Outlook. Vous pouvez (mais ne devriez pas) faire une réunion très longue qui commence 1 jour / heure et se termine un autre jour / heure plusieurs jours plus tard, mais vous devez faire une réunion récurrente pour gérer correctement votre horaire et celui de vos salles. Je cherche à sélectionner des enregistrements d'une manière similaire à une réunion récurrente.
Comment puis-je créer une select expert
règle pour obtenir les données que je recherche? Existe-t-il une autre façon de procéder? Peut-être un sous-rapport?
la source
HH
situe entre 14 h et 22 h à l'aide de laDATEPART
fonction. Ainsi, par exemple, sans être explicite sur les colonnes en utilisantSELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
dans la vue, puis pointez leselect expert
rapport pour obtenir ses données pour les périodes sélectionnées. Une autre façon serait de faire de la même requête T-SQL une commande CR CR, mais une vue SQL peut être bien meilleure.SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
et vous pouvez être spécifique à la colonne avec la requête dans la vue SQL,select column1, column2 FROM ~
etc., au lieu de*
.