C# 更改数据库位置会删除所有者架构

C# 更改数据库位置会删除所有者架构,c#,.net,visual-studio-2010,crystal-reports,C#,.net,Visual Studio 2010,Crystal Reports,我们在8.0.1.0中创建了数百个报告(我知道它们是旧的) 我们创建了一个VisualStudio2010C#应用程序来运行这些报告。这是一个Windows应用程序。Web应用程序出现了一些问题 所有报告都保存在PROD环境下 我们正在测试环境中工作 我们使用的是Oracle环境,所有报告都使用Oracle服务器连接 当我们通过C#运行报告时,我们继续将所有数据库位置更改为我们的测试环境。发生这种情况时,“所有者”(模式)信息将被删除。报告失败,出现942错误 现在,如果我们不更改数据库,将其保

我们在8.0.1.0中创建了数百个报告(我知道它们是旧的)

我们创建了一个VisualStudio2010C#应用程序来运行这些报告。这是一个Windows应用程序。Web应用程序出现了一些问题

所有报告都保存在PROD环境下

我们正在测试环境中工作

我们使用的是Oracle环境,所有报告都使用Oracle服务器连接

当我们通过C#运行报告时,我们继续将所有数据库位置更改为我们的测试环境。发生这种情况时,“所有者”(模式)信息将被删除。报告失败,出现942错误

现在,如果我们不更改数据库,将其保留为PROD,那么一切都会完美工作。似乎通过更改数据库,模式信息被删除了

任何想法。我一直在四处寻找,找不到解决办法

代码片段:

connectionInfo.DatabaseName = "";
connectionInfo.ServerName = <SERVER>;
connectionInfo.UserID = <USER>;
connectionInfo.Password =  <PWORD>;

foreach (Table crTable in crTables)
        {
            crTableLogOnInfo = crTable.LogOnInfo;
            crTableLogOnInfo.ConnectionInfo = connectionInfo;
            crTable.ApplyLogOnInfo(crTableLogOnInfo);

            // if you wish to change the schema name as well, you will need to set Location property as follows:
             //crTable.Location = "<SCHEMA>." + crTable.Name;

        }
connectionInfo.DatabaseName=“”;
connectionInfo.ServerName=;
connectionInfo.UserID=;
connectionInfo.Password=;
foreach(表格crTable中的表格crTable)
{
crTableLogOnInfo=crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo=ConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
//如果还希望更改架构名称,则需要按如下方式设置Location属性:
//crTable.Location=“.”+crTable.Name;
}

我已尝试设置crTable。位置,但程序锁定。因此不确定该怎么办。

过去,我们通过以下操作成功更改了连接参数:

CrystalDecisions.Shared.TableLogOnInfo info = document.Database.Tables[iTable].LogOnInfo.Clone() as CrystalDecisions.Shared.TableLogOnInfo;

info.ConnectionInfo.ServerName = <SERVER>;
info.ConnectionInfo.DatabaseName = "";
info.ConnectionInfo.UserID = <USER>;
info.ConnectionInfo.Password = <PASSWORD>;

document.Database.Tables[iTable].ApplyLogOnInfo(info);
connectionInfo.DatabaseName = "";
connectionInfo.ServerName = <SERVER>;
connectionInfo.UserID = <USER>;
connectionInfo.Password =  <PWORD>;

foreach (Table crTable in crTables)
    {
        crTableLogOnInfo = crTable.LogOnInfo;
        crTableLogOnInfo.ConnectionInfo = connectionInfo;
        crTable.ApplyLogOnInfo(crTableLogOnInfo);

        // if you wish to change the schema name as well, you will need to set   Location property as follows:
         //crTable.Location = "<SCHEMA>." + crTable.Name;
         crTable.Location = "<SCHEMA>." + crTable.LogOnInfo.TableName;

    }
CrystalDecisions.Shared.TableLogOnInfo info=document.Database.Tables[iTable].LogOnInfo.Clone()作为CrystalDecisions.Shared.TableLogOnInfo;
info.ConnectionInfo.ServerName=;
info.ConnectionInfo.DatabaseName=“”;
info.ConnectionInfo.UserID=;
info.ConnectionInfo.Password=;
document.Database.Tables[iTable].ApplyGonInfo(info);

其中
document
CrystalDecisions.CrystalReports.Engine.ReportDocument
通过执行以下操作修复了它:

CrystalDecisions.Shared.TableLogOnInfo info = document.Database.Tables[iTable].LogOnInfo.Clone() as CrystalDecisions.Shared.TableLogOnInfo;

info.ConnectionInfo.ServerName = <SERVER>;
info.ConnectionInfo.DatabaseName = "";
info.ConnectionInfo.UserID = <USER>;
info.ConnectionInfo.Password = <PASSWORD>;

document.Database.Tables[iTable].ApplyLogOnInfo(info);
connectionInfo.DatabaseName = "";
connectionInfo.ServerName = <SERVER>;
connectionInfo.UserID = <USER>;
connectionInfo.Password =  <PWORD>;

foreach (Table crTable in crTables)
    {
        crTableLogOnInfo = crTable.LogOnInfo;
        crTableLogOnInfo.ConnectionInfo = connectionInfo;
        crTable.ApplyLogOnInfo(crTableLogOnInfo);

        // if you wish to change the schema name as well, you will need to set   Location property as follows:
         //crTable.Location = "<SCHEMA>." + crTable.Name;
         crTable.Location = "<SCHEMA>." + crTable.LogOnInfo.TableName;

    }
connectionInfo.DatabaseName=“”;
connectionInfo.ServerName=;
connectionInfo.UserID=;
connectionInfo.Password=;
foreach(表格crTable中的表格crTable)
{
crTableLogOnInfo=crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo=ConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
//如果还希望更改架构名称,则需要按如下方式设置Location属性:
//crTable.Location=“.”+crTable.Name;
crTable.Location=“.”+crTable.LogOnInfo.TableName;
}

我设置的位置不正确。谢谢你的帮助

942错误的消息是什么?找不到视图/表。这是因为架构正在被删除,所以它不知道在哪里可以找到表。谢谢!但我认为我们找到了另一种似乎有效的方法。见下文