Trừ khi ai đó có giải pháp nhanh hơn / đơn giản hơn, đây là cách tôi sử dụng để có được các báo cáo tinh thể hoạt động với MS Access trong Visual Studio 2010. Nó liên quan nhiều hơn một chút so với phương pháp chọn nguồn dữ liệu thông thường, nhưng nó cung cấp nhiều quyền kiểm soát hơn, là cơ sở dữ liệu bất khả tri và hoạt động khi các phương pháp khác đôi khi không thành công (đặc biệt là với MS Access theo kinh nghiệm của tôi).
Tôi sẽ trình bày chi tiết quá trình làm cho các báo cáo hoạt động từ đầu đến cuối (vì toàn bộ quy trình này có thể hữu ích cho những người khác) nhưng sẽ nêu bật các bit có thể hữu ích cho bạn.
1) Cài đặt các Báo cáo Tinh thể trên trang SAP. Đảm bảo bạn tải xuống tệp exe, KHÔNG PHẢI tệp msi (nó không hoạt động):
http://scn.sap.com/docs/DOC-7824
2) Thay đổi Khung mục tiêu của ứng dụng của bạn thành .Net Framework 4 (KHÔNG phải ứng dụng khách). Công cụ Pha lê không có trong hồ sơ cơ bản.
3) Thêm tham chiếu đến thư viện Crystal (Crystal Reports cho .NET)
4) Thêm biểu mẫu, trên biểu mẫu đó đặt điều khiển Trình xem Báo cáo Pha lê (từ phần Báo cáo của Hộp công cụ):
5) Thêm CrystalReportDocument và gán nó cho điều khiển CrystalReportViewer:
Để thực sự điền dữ liệu vào báo cáo, bạn làm như sau:
1) Xuất lược đồ báo cáo của bạn bằng cách thực thi mã lấy dữ liệu báo cáo của bạn (từ một cổng) và xuất lược đồ. Ví dụ:
<TestMethod()>
Public Sub SchemaTest()
Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub
Nếu bạn đã tạo báo cáo của mình, bạn có thể sẽ không cần điều này. Tương tự nếu bạn có thể viết xml bằng tay (dễ dàng khi bạn có mẫu để làm việc từ đó)
2) Sau đó, bạn tải dữ liệu này vào báo cáo của mình để lấy các trường mà sau đó bạn có thể thao tác để tạo báo cáo của mình. Để thực hiện việc này, bạn nhấp chuột phải vào các trường cơ sở dữ liệu trong Trình khám phá Trường Báo cáo:
3) Từ đây bạn chọn Chuyên gia cơ sở dữ liệu và chọn ADO.net (xml). Lựa chọn hợp lý của Access / Excel DAO thực sự không hoạt động chút nào trong VS 2010. Chọn tệp giản đồ của bạn và tải nó, sau đó nhấp đúp vào Table1 để điền vào dạng xem Bảng đã chọn:
4) Bây giờ bạn đã tải một lược đồ, bạn sẽ có thể thấy các trường trong danh sách thả xuống các trường mà bạn có thể kéo thả vào báo cáo của mình:
5) Cuối cùng, bạn tải tập dữ liệu vào báo cáo của mình bằng cách thực thi mã trong trường hợp tải biểu mẫu của bạn mà bạn đã đặt điều khiển người xem báo cáo trên:
i) Đảm bảo rằng bạn xuất một tập dữ liệu (không thể lập dữ liệu) từ cổng của bạn (hoặc bất cứ nơi nào):
Public Shared Function AccountingIncomeTotals() As DataSet
Dim dataSet As New DataSet
Dim dataTable As DataTable = Database.GetDataTable(GetCommand(DBC.Reporting.SPs.AccountingIncomeTotals))
dataSet.Tables.Add(dataTable)
Return dataSet
End Function
ii) Sau đó gán nó vào nguồn dữ liệu trên báo cáo:
Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub
Phần trên có thể sẽ đặc biệt thú vị với bạn vì nó cho phép bạn chỉ định trực tiếp nguồn dữ liệu cho báo cáo mà không cần phải sử dụng bảng điều khiển Giao diện người dùng DataSources chọn tinh thể.
Còn một thứ nữa là bắt buộc, bạn cần thêm "useLegacyV2RuntimeActivationPolicy" vào tệp app.config:
http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an
Tôi hy vọng điều này sẽ hữu ích, xin lỗi vì nó quá liên quan, nếu bạn có bất kỳ câu hỏi nào, vui lòng hỏi