Pracuję z Crystal Reports 2016. Źródłem danych jest MS SQL Server 2008 R2. Obecnie jestem w stanie poprosić użytkownika o podanie zakresu dat dla mojego raportu za pomocą parametru. Chciałbym również dodać monit o podanie zakresu czasu. Użycie monitu o parametr DateTime nie robi tego, co chcę. Zakres dat wybierze większe okno dni, a zakres czasu określi, o jakich godzinach w ciągu dnia raport pokaże dane. Korzystanie z monitu parametru DateTime dodaje precyzji do początkowego i końcowego dnia / godziny raportu i nie robi tego, co chcę. Oba monity będą odnosić się do tego samego rekordu DateTime w bazie danych.
Próbowałem dodać osobny, drugi monit o parametr dla sprawiedliwego czasu, ale ma to ten sam skutek, co zmiana pytania o parametr na wartość DateTime. Powtórzę: to nie jest mój pożądany rezultat.
Jako konkretny, konkretny przykład, chciałbym użyć danych, które są ważne od 1 września do 31 października, gdzie rzecz, o której mówię, wydarzyła się między 14.00 a 22.00 EST w którekolwiek lub wszystkie dni. Jeśli mam opcję DateTime, mogę wybrać 1 września, godz. 14.00 i 31 października, godz. 22.00. Nie to jednak próbuję wybrać.
Zasadniczo wybierz dane, które wystąpiły w tych dniach między godziną 14.00 a 22.00. Gdzie można wybrać datę początkową i datę końcową; a czas rozpoczęcia i czas zakończenia są wybierane.
Korzystając z języka SQL, myślę, że chciałbym wewnętrznego połączenia zakresu dat i zakresu czasu (środkowego):
Zupełnie niezwiązany, ale podobny przykład; to zjawisko jest podobne do spotkań w Outlooku. Mógłbyś (ale nie powinien) odbyć naprawdę długie spotkanie, które rozpoczyna się 1 dzień / godzinę, a kończy kilka dni później, ale powinieneś zrobić spotkanie cykliczne, aby właściwie zarządzać harmonogramem twojego i swoich pokoi. Chcę wybrać rekordy w podobny sposób, jak cykliczne spotkanie.
Jak stworzyć select expert
regułę, aby uzyskać dane, których szukam? Czy jest jakiś inny sposób, aby to zrobić? Może podraport?
źródło
HH
jest między 14:00 a 22:00 za pomocą tejDATEPART
funkcji. Na przykład, bez jawnego używania kolumnySELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
w widoku, a następnie wskażselect expert
raport, aby uzyskać z niego dane dla wybranych okresów. Innym sposobem byłoby uczynienie z tego samego zapytania T-SQL polecenia CR SQL, ale widok SQL może działać znacznie lepiej.SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
, możesz być specyficzny dla kolumny w zapytaniu w widoku SQL,select column1, column2 FROM ~
itd. Zamiast*
.