在运行时使用动态表创建Crystal Report

时间:2011-12-27 17:36:59

标签: sql visual-studio-2010 crystal-reports odbc

您好我正在计划一个应用程序,该应用程序基本上是使用ODBC无dsn连接字符串的数据库(专有Pervasive SQL)的报告前端。

我能够在Visual Studio中创建数据集,并将报告链接到应用程序。但是在实际使用中,每个用户的数据库位置会有所不同。这不是主要问题。我用连接字符串克服了这一点,它允许你设置数据库路径的位置。

这是踢球者......

我想要读取的表的名称以唯一文件名为前缀(实际上我上面提到的名称相同)。我需要crystal来在运行时重新映射表名。只是表名前缀真的。字段的字段和名称不会改变。

关于我应该在哪里寻找写这个块的任何想法?我正在使用VS2010& C#如果有帮助的话。我认为你应该是一些Crystal附带的类文件,可以做一些运行时反射来获取/设置表名?

任何想法都会受到欢迎和赞赏。 罗布

编辑:我发现了一些包含API文档和其他支持的文档link。我会研究他们。它们都是.chm文件(Windows帮助文件),因此没有“在线”文档可供搜索。

1 个答案:

答案 0 :(得分:0)

  • 添加Crystal reportViewer将名称更改为objReport
  • 添加公共函数ShowReport()

    public void ShowReport(ReportDocument objReport)
    {
        Cursor.Current = Cursors.WaitCursor;
        objReport.SetDatabaseLogon("", "dbpassword");
        cRep.ReportSource = objReport;
        this.Show();
        Cursor.Current = Cursors.Default;
    }
    

并在应用程序的任何位置调用它

ds = GetDataInDataSet();//fILL DataSet with your data
rptPSummary objRpt = new rptPSummary();
objRpt.SummaryInfo.ReportComments = "Have a nice day";
objRpt.SummaryInfo.ReportTitle = "Purchase Summary Report from " + sDate.ToString("dd/MM/yyyy") + " to " + eDate.ToString("dd/MM/yyyy");
objRpt.SetDataSource(ds);

frmReportView frmRpt = new frmReportView();
frmRpt.Text = objRpt.SummaryInfo.ReportTitle;
frmRpt.MdiParent = this;
frmRpt.ShowReport(objRpt);