Eingabeaufforderung für Parameter mit separaten Datums- und Zeitwerten?

9

Ich arbeite mit Crystal Reports 2016. Die Datenquelle ist MS SQL Server 2008 R2. Derzeit kann ich den Benutzer mithilfe eines Parameters zur Eingabe eines Datumsbereichs für meinen Bericht auffordern. Ich möchte auch eine Eingabeaufforderung für einen Zeitraum hinzufügen. Die Verwendung einer Eingabeaufforderung für einen DateTime-Parameter macht nicht das, was ich will. Der Datumsbereich wählt ein größeres Fenster von Tagen aus, und der Zeitbereich wählt aus, zu welchen Zeiten während des Tages der Bericht die Daten anzeigt. Die Verwendung einer DateTime-Eingabeaufforderung erhöht lediglich die Genauigkeit des Start- und Endtages / der Endzeit des Berichts und führt nicht zu den gewünschten Aktionen. Beide Eingabeaufforderungen beziehen sich auf denselben DateTime-Datensatz in der Datenbank.

Ich habe versucht, zum separaten Zeitpunkt eine separate zweite Parameter-Eingabeaufforderung hinzuzufügen, aber das hat das gleiche Ergebnis wie das Ändern der Parameter-Eingabeaufforderung in einen DateTime-Wert. Ich werde wiederholen: Das ist nicht mein gewünschtes Ergebnis.

Als konkretes, spezifisches Beispiel möchte ich Daten verwenden, die für den 1. September bis 31. Oktober gültig sind, wenn das, worüber ich berichte, an einem oder allen diesen Tagen zwischen 14.00 und 22.00 Uhr EST passiert ist. Wenn ich eine DateTime-Auswahl habe, kann ich zwischen dem 1. September, 14 Uhr und dem 31. Oktober, 22 Uhr wählen. Dies ist jedoch nicht das, was ich auswählen möchte.

Wählen Sie grundsätzlich die Daten aus, die an diesen Tagen zwischen 14.00 und 22.00 Uhr aufgetreten sind. Wo das Startdatum und das Enddatum wählbar sind; und die Startzeit und Endzeit sind wählbar.

Geben Sie hier die Bildbeschreibung ein

Mit der SQL-Sprache möchte ich eine innere Verknüpfung des Datumsbereichs und des Zeitbereichs (der mittleren):

Geben Sie hier die Bildbeschreibung ein

Ein völlig unabhängiges, aber ähnliches Beispiel; Dieses Phänomen ähnelt Besprechungen in Outlook. Sie könnten (sollten aber nicht) eine wirklich lange Besprechung abhalten, die an einem Tag / einer Uhrzeit beginnt und einige Tage später an einem anderen Tag / einer anderen Uhrzeit endet. Sie sollten jedoch eine wiederkehrende Besprechung abhalten, um den Zeitplan für Sie und Ihre Räume ordnungsgemäß zu verwalten. Ich möchte Datensätze ähnlich wie bei einem wiederkehrenden Meeting auswählen.

Wie kann ich eine select expertRegel erstellen, um die gesuchten Daten zu erhalten? Gibt es eine andere Möglichkeit, dies zu tun? Vielleicht ein Unterbericht?

YetAnotherRandomUser
quelle
1
Es kann zu spät sein, da dieses Q jetzt eine Woche alt ist. Ich würde es als Beispiel-Eingaben, erforderliche Ausgabe und Ihren besten Lösungsversuch umschreiben (ich weiß, dass Sie als CR-Entwickler auf viele eingebettete Widgets angewiesen sind, was das Posten schwieriger macht). Aber so wie es ist, kann ich mir nicht vorstellen, welches Problem Sie gezielt lösen wollen. Wenn Sie sagen "Ich bekomme 2017-05-12.00: 00: 00Z, aber ich möchte 2017-05-12.23: 59: 59", dann fällt es vielen Menschen leichter, zu helfen. Viel Glück.
Shellter
1
Eine einfache Lösung besteht möglicherweise darin, eine Datenbankansicht in MS SQL zu erstellen, die auf die andere Tabelle verweist, in der der Bericht die Daten abruft. Weisen Sie ihn jedoch an, nur die Werte abzurufen, bei denen die [Stunde] HHmithilfe der DATEPARTFunktion zwischen 14.00 und 22.00 Uhr liegt . Zum Beispiel, ohne dass die Spalte SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22in der Ansicht explizit verwendet wird, und dann auf den select expertBericht zeigen, um die Daten für ausgewählte Datumsperioden daraus abzurufen. Eine andere Möglichkeit wäre, dieselbe T-SQL-Abfrage zu einem CR-SQL-Befehl zu machen, aber eine SQL-Ansicht kann eine viel bessere Leistung erbringen.
Pimp Juice IT
1
Um klar zu sein, wäre die SQL-Abfrage, mit der Sie möglicherweise als SQL VIEW- oder CR SQL Command-Objekt spielen möchten, SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22und Sie können spaltenspezifisch mit der Abfrage in der SQL-Ansicht usw. select column1, column2 FROM ~usw. sein *.
Pimp Juice IT
1
Mein Beispiel war ein konkretes Beispiel. Ich möchte den Benutzer die Start- und Endzeiten bestimmen lassen, weshalb ich Parameter erwähnt habe. Ich weiß nicht so viel über SQL-Ansichten, aber ich vermute, wenn ich so etwas irgendwo einfüge, ist es statisch festgelegt und der Benutzer, der den Bericht ausführt, kann ihn nicht im laufenden Betrieb ändern. Ich werde sehen, wie die Frage in dieser Hinsicht klarer wird.
YetAnotherRandomUser
Okay, das würde nicht funktionieren, wenn die Benutzer den Zeitbereich auswählen würden. Dies kann möglicherweise ein Job für einen gespeicherten Prozess sein. Ich habe kein CR mehr und es ist ungefähr ein Jahr her, seit ich damit herumgespielt habe, um etwas zu testen, aber ich dachte, ich könnte mit einer möglichen Lösung auf SQL-Ebene helfen, vorausgesetzt, Sie könnten den CR-Teil einrichten und so konfigurieren, dass TSQL dies ermöglicht die Filterung usw. Ich bin mir nicht sicher, ob Sie einen gespeicherten Prozess erstellen und Start- und Endzeitparameter übergeben und eine dynamische CR-Eingabeaufforderung für diese Werte usw. haben könnten, aber ich dachte, ich würde Ihnen zumindest einige Ideen geben ... Viel Glück ungeachtet.
Pimp Juice IT