Pytanie o parametr oddzielnych wartości daty i godziny?


9

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.

wprowadź opis zdjęcia tutaj

Korzystając z języka SQL, myślę, że chciałbym wewnętrznego połączenia zakresu dat i zakresu czasu (środkowego):

wprowadź opis zdjęcia tutaj

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 expertregułę, aby uzyskać dane, których szukam? Czy jest jakiś inny sposób, aby to zrobić? Może podraport?


1
Może być za późno, ponieważ ten Q ma już tydzień. Przepisałbym to jako przykładowe dane wejściowe, wymagane dane wyjściowe i twoja najlepsza próba rozwiązania (wiem, że jako CR programista polegasz na wielu osadzonych widżetach, co utrudnia publikowanie). Ale w tej chwili nie mogę sobie wyobrazić, jaki problem konkretnie próbujesz rozwiązać. Jeśli powiesz „Dostaję 2017-05-12.00: 00: 00Z, ale chcę 2017-05-12.23: 59: 59”, to myślę, że wielu ludziom łatwiej byłoby pomóc. Powodzenia.
łupacz

1
Być może prostym rozwiązaniem jest utworzenie widoku bazy danych w MS SQL wskazującego na drugą tabelę, w której raport pobiera dane, ale nakazać, aby pobierał tylko wartości tutaj [godzina] HHjest między 14:00 a 22:00 za pomocą tej DATEPARTfunkcji. Na przykład, bez jawnego używania kolumny SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22w widoku, a następnie wskaż select expertraport, 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.
Pimp Juice IT

1
Tak więc, aby wyjaśnić zapytanie SQL, którym możesz chcieć się bawić jako WIDOK SQL lub obiekt CR SQL Command 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 *.
Pimp Juice IT

1
Mój przykład był konkretnym przykładem. Chcę pozwolić użytkownikowi określić czas rozpoczęcia i zakończenia, dlatego wspomniałem o parametrach. Nie wiem zbyt wiele o widokach SQL, ale zgaduję, że jeśli gdzieś wkleję coś takiego, jest to ustawione statycznie, a użytkownik uruchamiający raport nie może tego zmienić na bieżąco. Zobaczę, jak wyjaśnić pytanie w tym względzie.
YetAnotherRandomUser

Okej, to nie zadziałałoby, gdyby użytkownicy wybrali przedział czasu. Być może może to być praca dla przechowywanego proc. Nie mam już CR i minął już rok, odkąd pomyślałem o tym, aby cokolwiek przetestować, ale pomyślałem, że mogę pomóc w potencjalnym rozwiązaniu na poziomie SQL, zakładając, że można uzyskać konfigurację części CR i skonfigurować, aby umożliwić TSQL filtrowanie itp. Nie jestem pewien, czy możesz zbudować zapisany proc i przekazać parametry czasu rozpoczęcia i zakończenia oraz poprosić CR o dynamiczne monitowanie o te wartości itp., ale pomyślałem, że przynajmniej dam ci kilka pomysłów ... Powodzenia bez względu.
Pimp Juice IT
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.