2012-11-28 64 views
5

Chúng tôi có hàng trăm Báo cáo được tạo trong 8.0.1.0 (Tôi biết chúng cũ).Thay đổi vị trí cơ sở dữ liệu sẽ giảm lược đồ của chủ sở hữu

Chúng tôi đã tạo ứng dụng Visual Studio 2010 C# để chạy các báo cáo này. Đó là một ứng dụng Windows. Đã xảy ra sự cố với Ứng dụng web.

Tất cả các báo cáo đều được lưu trong môi trường PROD.

Chúng tôi đang làm việc trong môi trường TEST.

Chúng tôi đang sử dụng môi trường Oracle và tất cả các báo cáo sử dụng kết nối Máy chủ Oracle.

Khi chúng tôi chạy báo cáo qua C#, chúng tôi tiếp tục và thay đổi tất cả các vị trí cơ sở dữ liệu sang môi trường TEST của chúng tôi. Khi điều này xảy ra, thông tin "Chủ sở hữu" (lược đồ) bị loại bỏ. Báo cáo không thành công với lỗi 942.

Bây giờ nếu chúng ta không thay đổi cơ sở dữ liệu, hãy giữ nguyên nó là PROD, mọi thứ hoạt động hoàn hảo. Dường như bằng cách thay đổi cơ sở dữ liệu, thông tin lược đồ sẽ bị loại bỏ.

Mọi ý tưởng. Tôi đã tìm kiếm xung quanh và không thể tìm được giải pháp.

Snippet mã:

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; 

     } 

Tôi đã cố gắng để thiết lập các crTable.Location nhưng chương trình bị treo. Vì vậy, không chắc chắn phải làm gì.

+0

Thông báo lỗi 942 là gì? –

+0

Không thể tìm thấy chế độ xem/bảng. Đó là vì lược đồ đang bị loại bỏ nên nó không biết nơi tìm các bảng. – madkow

Trả lời

1

Trong quá khứ chúng ta đã thay đổi thành công các thông số kết nối bằng cách làm này:

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); 

nơi documentCrystalDecisions.CrystalReports.Engine.ReportDocument.

+0

Cảm ơn! Nhưng tôi nghĩ chúng tôi đã tìm ra một cách khác có vẻ hiệu quả. Xem bên dưới – madkow

1

cố định nó bằng cách làm này:

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; 

    } 

tôi đã thiết lập Location không chính xác. Cảm ơn bạn đã giúp đỡ!

Các vấn đề liên quan