2011-12-27 49 views
0

你好我正在计划一个应用程序,它基本上是一个使用ODBC dsn-less连接字符串的数据库(专有Pervasive SQL)的报告前端。在运行时创建一个包含动态表的Crystal Report

我能够在Visual Studio中创建数据集并将报告链接到应用程序。但是,在现实世界的使用情况下,数据库的位置会因用户而异。这不是主要问题。我用连接字符串克服了这个问题,它允许你设置数据库路径的位置。

这里的踢球者...

,我想从一个独特的文件名(其实我上面提到的相同名称)的前缀来读取表的名称。我需要在运行时重新映射表名。只是表名前缀真的。字段的字段和名称不会更改。

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

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

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

回答

0
  • 添加一个水晶的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); 
+0

谢谢回复!所以看起来数据集是什么决定了表名是什么?当您将数据集传递给报告时,它如何知道要查询哪个表? – Robnauticus 2011-12-28 08:12:25