我必须构建一个自定义报告,该报告使用报告中的客户端名称,地址和用户名获取每个订单的订单行。
当我做一个简单的查询时:
SELECT FilteredSalesOrder.*, FilteredAccount.*
FROM FilteredSalesOrder INNER JOIN FilteredAccount
ON FilteredSalesOrder.customerid = FilteredAccount.accountid
我检索数据但仅针对一行。当有更多时,预览不显示任何内容。 这不是一个大问题,因为我一次只需要1个订单。
因此,对于我的OrderReport,我需要每个订单的所有OrderLines。报表按订单打印,而不是同时打印多个订单。 它看起来像这样:
我刚加入了5张表,我需要在订单报告中提供数据。
SELECT FilteredSalesOrder.*, FilteredAccount.*, FilteredSalesOrderDetail.*, FilteredSystemUser.*, FilteredProduct.*
FROM ((((FilteredSalesOrder INNER JOIN FilteredAccount
ON FilteredSalesOrder.customerid = FilteredAccount.accountid) INNER JOIN FilteredSalesOrderDetail
ON FilteredSalesOrderDetail.salesorderid = FilteredSalesOrder.salesorderid) INNER JOIN FilteredProduct
ON FilteredProduct.productid = FilteredSalesOrderDetail.productid) INNER JOIN FilteredSystemUser
ON FilteredSystemUser.systemuserid = FilteredSalesOrder.ownerid)
总结一下:
答案 0 :(得分:1)
它返回了一个错误,因为查询返回了超过665列,显然SQL无法处理。
通过在记事本中打开报表时调整连接字符串解决了这个问题,您可以对其进行修改以匹配您的生产环境。
当您使用SQL Server上的Visual Studio 2008报表向导生成报表时,报表会自动处理此问题。如果从数据集中拖放字段。报告只会记录它找到的第一条记录。