数据连接方面没问题。
//设置连接串
ConnectionInfo crConnectionInfo;
crConnectionInfo = new ConnectionInfo();
crConnectionInfo.DatabaseName = "DatabaseName";
crConnectionInfo.ServerName = "ServerName";
crConnectionInfo.Password = "Password";
crConnectionInfo.UserID = "UserID"; //Database crDatabase;
Tables crTables;
TableLogOnInfo crTableLogOnInfo;
//crDatabase = crReportDocument.Database;
crTables = crDatabase.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
{
crTableLogOnInfo=crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
try
{
crTable.Location =crConnectionInfo.DatabaseName+".dbo."+crTable.Name ;
}
catch{}
crTable.ApplyLogOnInfo(crTableLogOnInfo);
}

解决方案 »

  1.   

    好像这一句需要改一下
    try
    {
    crTable.Location =crConnectionInfo.DatabaseName+".dbo."+crTable.Name ;
    }
    catch{}
    --〉
    crTableLogOnInfo.TableName = crTable;
      

  2.   

    测过了,问题和这一句应该没关系。
    只有ServerName不同的时候才会出错。
    奇怪.以前用Crystal Report 7.0时可以将报表中的数据源部分置空。动态传入服务器、数据库就没有问题。现在用的是9.2版。真晕!
      

  3.   

    我用水晶报表做图(包括关联表)出现这个问题。还有一个问题是:如果报表中相同的表引两次即在水晶报表中用aTableName,aTableName_1两次引入相同的表aTableName则此时服务器名与数据库名都必须相同执行才正确。楼上的,如果你找到解决方案通知我一声。咳!