Crystal Report不使用表单和数据库
本文关键字:表单 数据库 Report Crystal | 更新日期: 2023-09-27 18:24:13
我有一个VS解决方案,它试图在不使用表单的情况下生成Crystal Report。要使用表单生成报告,请使用以下代码。
private void button1_Click(object sender, EventArgs e)
{
cryRpt = new ReportDocument();
cryRpt.Load(PUT CRYSTAL REPORT PATH HERE''CrystalReport1.rpt");
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
private void button2_Click(object sender, EventArgs e)
{
try
{
ExportOptions CrExportOptions ;
DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
CrDiskFileDestinationOptions.DiskFileName = "c:''csharp.net-informations.pdf";
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
}
我想生成一个没有表单的PDF。所以我的代码会像一样
_crAdviceRpt.Load("C:'Users'AD_AdviceTemplate.rpt")
Dim ds As ADDataset = New ADDataset
Dim dt As ADDataset.ADDatatableDataTable = New ADDataset.ADDatatableDataTable
Dim dr As DataRow
dr = dt.NewRow
dr("strLinesList") = strLine
dt.Rows.Add(dr)
_crAdviceRpt.SetDataSource(ds.Tables(0))
然而,我遇到了一个问题,因为我不太确定如何更换以下代码
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
用于非基于表单的方法。
非常感谢您的任何帮助
假设说"我想生成一个没有表单的PDF",你想使用控制台来完成这项工作,那么只需在Main
中编写代码。
static void Main(string[] args)
{
ReportDocument cryRpt = new ReportDocument();
cryRpt.Load(@"D:'daily study'console crystal'ConsoleApplication1'CrystalReport1.rpt");
ExportOptions CrExportOptions;
DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
CrDiskFileDestinationOptions.DiskFileName = "c:''csharp.net-informations.pdf";
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
}
代码来自:链接
错误显示,您的水晶报告内部参数未通过
或
如果您在报告中使用了sp,请阅读以下要点
Crystal报告sp和实际sp不相同。做了这个报告后,你是否更改了sp,特别是更改了参数的数据类型、长度、重命名等。
所以这影响了sp中的定义,你已经在水晶报告中提到了。执行时始终同步。
当两个部分不同时,就会出现此错误。
所以只需转到数据库菜单并首先验证即可。
转到"工具"菜单,从WIZARDS子菜单中选择更改数据源/数据库--------------------------**---------------------------------------
现在的另一个问题可能是,您没有传递必须来自c#代码的参数。
for(int i=0;i<ReportDoc.DataDefinition.FormulaFields.Count; i++)
if(ReportDoc.DataDefinition.FormulaFields[i].FormulaName==
"{" + paramName + "}")
ReportDoc.DataDefinition.FormulaFields[i].Text = "'"" +paramValue +"'"";
http://www.codeproject.com/Articles/5492/Passing-Parameters-to-Crystal-Reports-at-Runtime
http://www.codeproject.com/Tips/753879/Automatically-Setting-a-Parameter-from-a-Csharp-Va