C# 不使用表单和数据库的Crystal报表

C# 不使用表单和数据库的Crystal报表,c#,vb.net,crystal-reports,C#,Vb.net,Crystal Reports,我有一个VS解决方案,它试图在不使用表单的情况下生成Crystal报表。要使用表单生成报告,请使用以下代码 private void button1_Click(object sender, EventArgs e) { cryRpt = new ReportDocument(); cryRpt.Load(PUT CRYSTAL REPORT PATH HERE\\CrystalReport1.rpt"); crystalReportViewer1.ReportSourc

我有一个VS解决方案,它试图在不使用表单的情况下生成Crystal报表。要使用表单生成报告,请使用以下代码

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,您想使用console完成此操作,然后只需在Main中编写代码即可


代码来源:

错误显示crystal report内部参数未通过

若您在报告中使用sp,请阅读下面的要点

水晶报表sp和实际sp不相同。 制作此报告后,您是否更改sp,特别是更改参数数据类型、长度、重命名等

这会影响sp中的定义,您已经在crystal report中提到过。执行时,它总是同步

当两个部分不相同时,会出现此错误

所以,只需进入数据库菜单并首先验证

转到“工具”菜单,然后从“向导”子菜单中选择“更改数据源/数据库” -------------**--------------------

现在另一个问题可能是您没有传递必须来自c代码的参数

 for(int i=0;i<ReportDoc.DataDefinition.FormulaFields.Count; i++)
    if(ReportDoc.DataDefinition.FormulaFields[i].FormulaName==
                    "{" + paramName + "}")
    ReportDoc.DataDefinition.FormulaFields[i].Text = "\"" +paramValue +"\"";

你所说的非形式化是什么意思?您编写的代码行将ReportViewer源代码设置为报表,如果您只想将报表导出为PDF格式,则不需要这些代码行…嗨,syed farjad,我已尝试向您介绍您的导出方法,但是,在运行时,我始终有一个缺少参数值的异常。你能给我一些建议吗?试着让我知道它是否有用。。。
 for(int i=0;i<ReportDoc.DataDefinition.FormulaFields.Count; i++)
    if(ReportDoc.DataDefinition.FormulaFields[i].FormulaName==
                    "{" + paramName + "}")
    ReportDoc.DataDefinition.FormulaFields[i].Text = "\"" +paramValue +"\"";