Nhắc thông số của các giá trị ngày và thời gian riêng biệt?


9

Tôi đang làm việc với Crystal Báo cáo 2016. Nguồn dữ liệu là MS SQL Server 2008 R2. Tôi hiện có thể nhắc người dùng về phạm vi ngày cho báo cáo của mình bằng tham số. Tôi cũng muốn thêm một dấu nhắc cho một phạm vi thời gian. Sử dụng lời nhắc cho tham số DateTime không làm những gì tôi muốn. Phạm vi ngày sẽ chọn một cửa sổ ngày lớn hơn và phạm vi thời gian sẽ chọn thời gian trong ngày báo cáo sẽ hiển thị dữ liệu. Sử dụng lời nhắc tham số DateTime chỉ đơn thuần là thêm độ chính xác cho ngày bắt đầu và ngày kết thúc của báo cáo và không làm những gì tôi muốn. Cả hai lời nhắc sẽ đề cập đến cùng một bản ghi DateTime trong cơ sở dữ liệu.

Tôi đã thử thêm một dấu nhắc tham số riêng biệt, thứ hai, chỉ trong một thời gian, nhưng điều đó có kết quả tương tự như thay đổi lời nhắc tham số thành giá trị DateTime. Tôi sẽ nhắc lại: đó không phải là kết quả mong muốn của tôi.

Như một ví dụ cụ thể, cụ thể, tôi muốn sử dụng dữ liệu có giá trị từ ngày 1 tháng 9 đến ngày 31 tháng 10 trong đó điều tôi đang báo cáo xảy ra trong khoảng thời gian từ 2 giờ chiều đến 10 giờ tối EST vào bất kỳ hoặc tất cả những ngày đó. Nếu tôi có lựa chọn DateTime, tôi có thể chọn ngày 1 tháng 9, 2 giờ chiều và ngày 31 tháng 10, 10 giờ tối. Tuy nhiên, đó không phải là những gì tôi đang cố gắng chọn.

Về cơ bản, chọn dữ liệu xảy ra vào những ngày này trong khoảng thời gian từ 2 giờ chiều đến 10 giờ tối. Trong đó ngày bắt đầu và ngày kết thúc có thể lựa chọn; và thời gian bắt đầu và thời gian kết thúc có thể lựa chọn.

nhập mô tả hình ảnh ở đây

Sử dụng cách nói SQL, tôi nghĩ rằng tôi muốn tham gia bên trong phạm vi ngày và phạm vi thời gian (trung tâm):

nhập mô tả hình ảnh ở đây

Một ví dụ hoàn toàn không liên quan nhưng tương tự; hiện tượng này tương tự như các cuộc họp trong Outlook. Bạn có thể (nhưng không nên) thực hiện một cuộc họp thực sự kéo dài bắt đầu vào 1 ngày / lần và kết thúc vào một ngày / thời gian khác vài ngày sau đó, nhưng bạn nên thực hiện một cuộc họp định kỳ để quản lý đúng lịch trình của bạn và phòng của bạn. Tôi đang tìm cách chọn hồ sơ theo cách tương tự như một cuộc họp định kỳ.

Làm cách nào tôi có thể tạo select expertquy tắc để nhận dữ liệu tôi đang tìm kiếm? Có một số cách khác tôi có thể làm điều này? Có thể là một báo cáo con?


1
Có thể đã quá muộn, vì Q này đã được một tuần tuổi. Tôi sẽ viết lại nó dưới dạng đầu vào mẫu, đầu ra cần thiết và nỗ lực tốt nhất của bạn cho một giải pháp (Tôi biết là CR dev bạn dựa vào rất nhiều widget được nhúng, khiến việc đăng bài trở nên khó khăn hơn). Nhưng như là, tôi không thể hình dung được vấn đề bạn đang cố gắng giải quyết cụ thể là gì. Nếu bạn nói "Tôi đang nhận được 2017-05-12.00: 00: 00Z nhưng tôi muốn 2017-05-12.23: 59: 59", thì tôi nghĩ nhiều người sẽ thấy dễ dàng hơn để giúp đỡ. Chúc may mắn.
shellter

1
Một giải pháp đơn giản có lẽ là tạo chế độ xem cơ sở dữ liệu trong MS SQL trỏ đến bảng khác nơi báo cáo nhận được dữ liệu nhưng yêu cầu nó chỉ nhận các giá trị ở đây, [giờ] HHnằm trong khoảng từ 2 giờ đến 10 giờ tối bằng cách sử dụng DATEPARThàm. Vì vậy, ví dụ mà không được cột rõ ràng bằng cách sử dụng SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22trong chế độ xem và sau đó trỏ select expertbáo cáo để lấy dữ liệu cho các khoảng thời gian ngày đã chọn từ nó. Một cách khác là tạo cùng một truy vấn T-SQL thành Lệnh CR SQL nhưng chế độ xem SQL có thể hoạt động tốt hơn nhiều.
Pimp Juice IT

1
Vì vậy, để rõ ràng truy vấn SQL mà bạn có thể muốn chơi với tư cách là SQL VIEW hoặc đối tượng Lệnh CR SQL sẽ là SELECT * FROM Table WHERE DATEPART(hh,[DateField]) BETWEEN 14 AND 22và bạn có thể là cột cụ thể với truy vấn trong chế độ xem SQL, select column1, column2 FROM ~v.v. thay vì *.
Pimp Juice IT

1
Ví dụ của tôi là một ví dụ cụ thể. Tôi muốn cho phép người dùng xác định thời gian bắt đầu và kết thúc, đó là lý do tại sao tôi đề cập đến các tham số. Tôi không biết nhiều về Chế độ xem SQL, nhưng tôi đoán nếu tôi dán một cái gì đó giống như vậy ở đâu đó, nó được đặt tĩnh và người dùng đang chạy báo cáo không thể thay đổi nhanh chóng. Tôi sẽ thấy về việc làm cho câu hỏi rõ ràng hơn về vấn đề đó.
YetAnotherRandomUser

Được rồi, điều đó sẽ không hoạt động nếu người dùng chọn phạm vi thời gian. Đây có thể là một công việc cho một Proc lưu trữ có lẽ. Tôi không còn CR nữa và đã được một năm kể từ khi tôi gặp rắc rối với nó để kiểm tra bất cứ điều gì nhưng tôi nghĩ tôi có thể giúp với một giải pháp cấp độ SQL tiềm năng giả sử bạn có thể thiết lập phần CR và cấu hình để cho phép TSQL thực hiện bộ lọc, v.v. Không chắc chắn nếu bạn có thể xây dựng một Proc được lưu trữ và chuyển các tham số thời gian bắt đầu và kết thúc và có dấu nhắc động CR cho các giá trị đó, v.v. nhưng tôi nghĩ ít nhất tôi sẽ cung cấp cho bạn một số ý tưởng ... Chúc may mắn bất kể.
Pimp Juice IT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.