ฉันทำงานกับ Crystal Reports 2016 แหล่งข้อมูลคือ MS SQL Server 2008 R2 ขณะนี้ฉันสามารถแจ้งให้ผู้ใช้ทราบช่วงวันที่สำหรับรายงานของฉันโดยใช้พารามิเตอร์ ฉันต้องการเพิ่มการแจ้งเตือนสำหรับช่วงเวลา การใช้พรอมต์สำหรับพารามิเตอร์ DateTime ไม่ได้ทำตามที่ฉันต้องการ ช่วงวันที่จะเลือกหน้าต่างที่ใหญ่กว่าของวันและช่วงเวลาจะเลือกช่วงเวลาระหว่างวันที่รายงานจะแสดงข้อมูล การใช้พรอมต์พารามิเตอร์ DateTime เพียงเพิ่มความแม่นยำให้กับวัน / เวลาเริ่มต้นและสิ้นสุดของรายงานและไม่ทำสิ่งที่ฉันต้องการ พรอมต์ทั้งสองจะอ้างถึงบันทึก DateTime เดียวกันในฐานข้อมูล
ฉันได้ลองเพิ่มการพรอมต์พารามิเตอร์ที่สองแยกต่างหากสำหรับเวลาเพียงอันเดียว แต่นั่นก็มีผลเหมือนกับการเปลี่ยนพรอมต์พารามิเตอร์ให้เป็นค่า DateTime ฉันจะย้ำ: นั่นไม่ใช่ผลลัพธ์ที่ฉันต้องการ
ในฐานะที่เป็นรูปธรรมเฉพาะเจาะจงฉันต้องการใช้ข้อมูลที่ถูกต้องสำหรับวันที่ 1 กันยายน - 31 ตุลาคมซึ่งสิ่งที่ฉันกำลังรายงานเกิดขึ้นระหว่าง 14.00 น. ถึง 22.00 น. EST ในทุกวันหรือทุกวัน หากฉันมีตัวเลือก DateTime ฉันสามารถเลือก 1 กันยายน 2 น. และ 31 ตุลาคม 22 น. อย่างไรก็ตามนั่นไม่ใช่สิ่งที่ฉันพยายามเลือก
โดยทั่วไปให้เลือกข้อมูลที่เกิดขึ้นในวันเหล่านี้ระหว่างเวลา 14.00 น. ถึง 22.00 น. โดยสามารถเลือกวันที่เริ่มต้นและวันที่สิ้นสุดได้ และเวลาเริ่มต้นและเวลาสิ้นสุดสามารถเลือกได้
ด้วยการใช้ SQL parlance ฉันคิดว่าฉันต้องการเข้าร่วมช่วงวันที่และช่วงเวลา (จุดศูนย์กลาง):
ตัวอย่างที่ไม่เกี่ยวข้องอย่างสมบูรณ์ แต่คล้ายกัน; ปรากฏการณ์นี้คล้ายกับการประชุมใน Outlook คุณสามารถ (แต่ไม่ควร) ทำการประชุมที่ยาวมาก ๆ ซึ่งเริ่มต้นในวันที่ 1 / เวลาและสิ้นสุดในอีกวัน / เวลาในอีกหลายวันต่อมา แต่คุณควรทำการประชุมซ้ำเพื่อจัดการตารางเวลาและห้องของคุณอย่างเหมาะสม ฉันกำลังมองหาเพื่อเลือกบันทึกในลักษณะที่คล้ายกับการประชุมที่เกิดขึ้นประจำ
ฉันจะสร้างselect expert
กฎเพื่อให้ได้ข้อมูลที่ต้องการได้อย่างไร มีวิธีอื่นที่ฉันสามารถทำได้หรือไม่ อาจจะเป็นรายงานย่อย
HH
อยู่ระหว่าง 2 PM ถึง 22 PM โดยใช้DATEPART
ฟังก์ชัน ตัวอย่างเช่นไม่มีคอลัมน์อย่างชัดเจนโดยใช้SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
ในมุมมองจากนั้นชี้select expert
รายงานเพื่อรับข้อมูลสำหรับช่วงวันที่ที่เลือก อีกวิธีหนึ่งคือการสร้างแบบสอบถาม T-SQL เดียวกันกับคำสั่ง CR SQL แต่มุมมอง SQL อาจทำงานได้ดีขึ้นมาก
SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22
และคุณสามารถเฉพาะคอลัมน์ที่มีแบบสอบถามในมุมมอง SQL เพื่อselect column1, column2 FROM ~
ฯลฯ *
แทน