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(); 

用于非基于表单的方法。

非常感谢您的任何帮助

Crystal Report不使用表单和数据库

假设说"我想生成一个没有表单的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