У меня есть отчет, который должен получить данные из двух логических областей DAL моего приложения, Vendors.xsd и Customers.xsd. Я могу использовать эксперт по базам данных, чтобы поместить и DataSet, и их DataTables в отчет, но я получаю эту ошибку:
В этом отчете использовалось несколько источников данных или хранимых процедур.
Пожалуйста, убедитесь, что не добавлено выражение SQL и нет серверной стороны group_by
выполняется.
Кажется, все в построении / дизайне отчетов работает нормально. Когда я на самом деле запускаю отчет, он просит меня войти в один из двух наборов данных (кажется, тот, который я добавляю вторым) и не получает данные.
Я проверил и подтвердил, что у меня нет этой проблемы, если для начала поместить все таблицы в один xsd.
EDIT
Вот код, который я использую для загрузки отчета:
Protected Sub CrystalReportViewer1_Init(sender As Object, e As EventArgs) Handles CrystalReportViewer1.Init
'Get Customer ID param
Dim CustomerID As Integer
If Not Integer.TryParse(Request.QueryString("CustomerID"), CustomerID) Then
CancelReportOnError("You must provide a customer ID!")
End If
'Get address type ID param
Dim AddressTypeID As Integer
If Not Integer.TryParse(Request.QueryString("AddressTypeID"), AddressTypeID) Then
CancelReportOnError("You must provide an address type!")
End If
'Gather report data --
'Address
Dim customersControl As New BLL.Customers()
Dim AddressData As DAL.Customers.AddressesDataTable = customersControl.GetAddressByCustomerID(CustomerID, AddressTypeID)
AddressData.TableName = "Addresses"
'Customer
Dim CustomerData As DAL.Customers.CustomersDataTable = customersControl.GetCustomerByID(CustomerID)
CustomerData.TableName = "Customers"
'Confirm customer exists
If CustomerData.Count = 0 Or AddressData.Count = 0 Then
CancelReportOnError(String.Format("Could not find Customer with ID {0}", CustomerID))
End If
'Vendor
Dim vendorsControl As New BLL.Vendors()
Dim VendorData As DAL.Vendors.VendorsDataTable = vendorsControl.GetVendordByCustomerID(CustomerID)
VendorData.TableName = "Vendors"
'Confirm vendor exists
If VendorData.Count = 0 Then
CancelReportOnError(String.Format("Could not find a Vendor associated with Customer ID {0}", CustomerID))
End If
'Build data source
Dim ReportData As New DataSet()
ReportData.Tables.Add(VendorData)
ReportData.Tables.Add(CustomerData)
ReportData.Tables.Add(AddressData)
ReportData.Relations.Add(CustomerData.CustomerIDColumn, AddressData.CustomerIDColumn)
ReportData.Relations.Add(VendorData.VendorIDColumn, CustomerData.VendorIDColumn)
'Load the report
Dim Report As New ReportDocument()
Report.Load(Server.MapPath("~/Members/Customers/MailingEnvelope.rpt"))
Report.SetDataSource(ReportData)
'Set the report to our viewer
CrystalReportViewer1.ReportSource = Report
CrystalReportViewer1.DataBind()
End Sub