我们使用没有子报告的数据集获得水晶报告的正确输出。但它不适用于子报告? 如何通过编码在vb.net中使用数据集传递水晶报告的子报告参数值? 我们使用Msaccess作为后端
请帮忙
答案 0 :(得分:0)
我不确定你究竟在问什么,但是这里有一种设置创建,设置和传递params到水晶报告的方法
从数据库中加载标准数据集。 使用DateSet.WriteXmlSchema创建Xml架构。 使用visal studio工具Xsd.exe创建一个类型安全的DataSet。 将其导入您的项目。 将数据从数据库加载到新类型安全数据集中,并将其设置为报告数据源。
以下代码可让您设置参数
Private Sub foo()
Dim parameterValues As New ParameterValues()
parameterValues.Add("MyValue")
MyDataSourceName.DataDefinition.ParameterFields("MyParamName").ApplyCurrentValues(parameterValues)
End Sub
我希望这会有所帮助
答案 1 :(得分:0)
您可以将DataTable与数据集完全相同使用,或者如果您要使用数据集,则以下代码可以正常运行。
ReportDocument cryRpt = new Rep
ortDocument();
Cls_Bl_CalibrationHeader clCalibrationHeader = new Cls_Bl_CalibrationHeader();
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
DataTable DT = null;
reportPath = "\\Report.rpt";
cryRpt.Load(reportPath);
DT = clClassName.M_GetByIDDate(sqlStr);
cryRpt.SetDataSource(DT);
DT = clClass.GetSubReportInfo();
cryRpt.OpenSubreport("SubReport").SetDataSource(DT);
crParameterDiscreteValue.Value = 1;
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["Parameter", "SubReport"];
crParameterFieldDefinition.CurrentValues.Clear();
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.DisplayGroupTree = false;
crystalReportViewer1.Refresh();
答案 2 :(得分:0)
:D我遇到了同样的问题然后我发现如果你在主要版本之前将DataSet设置为Subreports就可以了。