แจ้งพารามิเตอร์ของวันที่และเวลาแยกกันหรือไม่


9

ฉันทำงานกับ 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กฎเพื่อให้ได้ข้อมูลที่ต้องการได้อย่างไร มีวิธีอื่นที่ฉันสามารถทำได้หรือไม่ อาจจะเป็นรายงานย่อย


1
อาจจะสายเกินไปเนื่องจาก Q นี้มีอายุหนึ่งสัปดาห์แล้ว ฉันจะเขียนมันใหม่เป็นอินพุตตัวอย่างเอาต์พุตที่ต้องการและความพยายามอย่างเต็มที่ในการแก้ปัญหา (ฉันรู้ว่า CR dev คุณต้องใช้เครื่องมือฝังตัวจำนวนมากซึ่งทำให้การโพสต์ยากขึ้น) แต่อย่างนี้ฉันไม่สามารถจินตนาการได้ว่าปัญหาที่คุณพยายามแก้ไขโดยเฉพาะคืออะไร ถ้าคุณพูดว่า "ฉันได้รับ 2017-05-12.00: 00: 00Z แต่ฉันต้องการ 2017-05-12.23: 59: 59" แล้วฉันคิดว่าผู้คนจำนวนมากจะช่วยได้ง่ายขึ้น โชคดี.
shellter

1
วิธีแก้ปัญหาง่ายๆคือการสร้างมุมมองฐานข้อมูลใน MS SQL ที่ชี้ไปยังตารางอื่นที่รายงานได้รับข้อมูล แต่บอกให้รับค่าที่นี่เท่านั้น [ชั่วโมง] HHอยู่ระหว่าง 2 PM ถึง 22 PM โดยใช้DATEPARTฟังก์ชัน ตัวอย่างเช่นไม่มีคอลัมน์อย่างชัดเจนโดยใช้SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22ในมุมมองจากนั้นชี้select expertรายงานเพื่อรับข้อมูลสำหรับช่วงวันที่ที่เลือก อีกวิธีหนึ่งคือการสร้างแบบสอบถาม T-SQL เดียวกันกับคำสั่ง CR SQL แต่มุมมอง SQL อาจทำงานได้ดีขึ้นมาก
Pimp Juice IT

1
ดังนั้นเพื่อให้มีความชัดเจนแบบสอบถาม SQL คุณอาจต้องการที่จะเล่นกับเป็นมุมมอง SQL หรือวัตถุ CR SQL คำสั่งจะเป็นSELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22และคุณสามารถเฉพาะคอลัมน์ที่มีแบบสอบถามในมุมมอง SQL เพื่อselect column1, column2 FROM ~ฯลฯ *แทน
Pimp Juice IT

1
ตัวอย่างของฉันเป็นตัวอย่างเฉพาะ ฉันต้องการให้ผู้ใช้กำหนดเวลาเริ่มต้นและสิ้นสุดซึ่งเป็นสาเหตุที่ฉันพูดถึงพารามิเตอร์ ฉันไม่รู้มากเกี่ยวกับมุมมอง SQL แต่ฉันเดาว่าถ้าฉันวางบางอย่างเช่นนั้นมันจะตั้งค่าแบบคงที่และผู้ใช้เรียกใช้รายงานไม่สามารถเปลี่ยนได้ทันที ฉันจะดูเกี่ยวกับการทำให้คำถามชัดเจนขึ้นในเรื่องนั้น
YetAnotherRandomUser

ตกลงนั่นจะไม่ทำงานหากผู้ใช้เลือกช่วงเวลา นี่อาจเป็นงานสำหรับ proc ที่เก็บไว้บางที ฉันไม่มี CR อีกต่อไปและเป็นเวลาหนึ่งปีหรือมากกว่านั้นตั้งแต่ฉันทำมันเพื่อทดสอบอะไร แต่ฉันคิดว่าฉันสามารถช่วยด้วยโซลูชันระดับ SQL ที่มีศักยภาพโดยสมมติว่าคุณสามารถติดตั้งส่วน CR และกำหนดค่าเพื่อให้ TSQL ทำ การกรอง ฯลฯ ไม่แน่ใจว่าคุณสามารถสร้าง proc ที่เก็บไว้และส่งผ่านพารามิเตอร์เริ่มต้นและเวลาสิ้นสุดและมี CR พร้อมท์แบบไดนามิกสำหรับค่าเหล่านั้น ฯลฯ แต่ฉันคิดว่าอย่างน้อยฉันก็ให้ความคิดกับคุณ ... โชคดี ไม่คำนึงถึง
Pimp Juice IT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.