我在C sharp中为VS 2010使用SAP CR。我有五个表,我将它们与以下查询链接起来:
查询="SELECT Items.AccessionNo,Items.Name,Items.LocalName,Items.用法,Items.省,Items.地区,Items.VillTown,Items.EthernicCommunity,Arts.Name,Items.PurchasedDonated,Items.PauchasedFrom,Items.EYearOfCollection,Items.Materials,Items.Height,Items.Width,Items.Length,Items.周长,Items.直径,Items.颜色,Items.年龄,Items.重量,Items.PourchasedValue,Items.Reare,Items.LivingDyingTrad,Items.ManufacturingProcess,Items.PlaceOfManufacturing,Items.ConditionReport,Items.推荐,Items.DateOfAddition,Items.Position,捐赠者.Name,收藏家.Name,Placement.Name FROM Items INNER JOIN Arts ON Items。ArtId=Arts.ArtId INNER JOIN Donators ON Items.DonatorId=Donators.id INNER JOIN Collectors ON Items.CollectorId=Collectors.id INNAR JOIN Placement ON Items.PlacementId=Placement.id WHERE Items.id="+itemid;
问题是,在设计时,报告仍然使用已经嵌入的查询显示多个结果。
我正在使用以下代码通过上述查询
SqlCommand cmd = new SqlCommand(query, dbconn.conn);
if (dbconn.conn.State == ConnectionState.Closed)
{
dbconn.conn.Open();
}
SqlDataAdapter Datadpt = new SqlDataAdapter(cmd);
DataSet dtset = new DataSet("items");
Datadpt.Fill(dtset);
//rep is the Report document object already defined
rep.Load(@"....ReportsCRItem.rpt");
rep.SetDataSource(dtset);
CRViewer.ReportSource = rep;
if (dbconn.conn.State == ConnectionState.Open)
{
dbconn.conn.Close();
}
this.CRViewer.RefreshReport();
有什么建议吗?
whooosss。。。。。我明白了。crystalreportviewer的选择公式与报表文档记录的选择公式是分开的。您在水晶报表中创建的记录选择公式存储在ReportDoc.RecordSelectionFormula
属性中。将ReportDoc加载到ReportViewer时,其ReportViewer.SelectionFormula
属性不会采用.RecordSelectionFormula
的值。所以我做的是…
我的目标是:
ReportDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument
ReportViewer As CrystalDecisions.Windows.Forms.CrystalReportViewer
FlexReportDoc.SetParameterValue("Reference", gsReference)
在传递必要的参数后,如果您有任何。。。
ReportViewer.ReportSource = FlexReportDoc
ReportViewer.SelectionFormula = FlexReportDoc.RecordSelectionFormula
您需要将FlexReportDoc.RecordSelectionFormula
属性的值分配给ReportViewer.SelectionFormula
。