我有一个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();
用于非基于表单的方法。
非常感谢任何帮助
答案 0 :(得分:0)
假设说"我想生成一个没有表格的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();
}
代码来自:Link
答案 1 :(得分:0)
错误显示,您的晶体报告内部参数未通过
或
如果您在报告中使用sp,请阅读以下内容
Crystal report 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