Hello.
I have a *.rpt-file, created in the "SAP Crystal Reports" program with a ttx-file as data source description.
For example, the .ttx file is very simple:
str1 String 25 test1
I need show this report by a WPF-application, and I want to use an "Object Collection" for filling its data.
I try chahge a data source for the report like this:
namespace WPFTest
{
public class Filds3
{
public string str1 { get; set; }
}
public partial class MainWindow : Window
{
public CrystalReportsViewer crystalReportsViewer1;
public MainWindow()
{
InitializeComponent();
try
{
this.crystalReportsViewer1 = new CrystalReportsViewer()
{
Height = 500,
Width = 800
};
ReportDocument doc = new ReportDocument();
doc.Load("Report4.rpt");
var testValues2 = new ArrayList()
{
new Filds3 { str1 = "sd133" },
new Filds3 { str1 = "sd222" },
new Filds3 { str1 = "sd344" },
new Filds3 { str1 = "sd4323" },
};
string modelClassName = "WPFTest.Filds3";
NameValuePairs2 connectionProperties = new NameValuePairs2
{
new NameValuePair2
{
Name = DbConnectionAttributes.CONNINFO_DATABASE_DLL,
Value = DbConnectionAttributes.DATABASE_DLL_CRDB_ADOPLUS
},
new NameValuePair2
{
Name = DbConnectionAttributes.QE_DATABASE_NAME,
Value = ""
},
new NameValuePair2
{
Name = "QE_DatabaseType",
Value = "ADO.NET (XML)"
},
new NameValuePair2
{
Name = DbConnectionAttributes.QE_SERVER_DESCRIPTION,
Value = modelClassName
},
new NameValuePair2
{
Name = "QE_SQLDB",
Value = false
},
new NameValuePair2
{
Name = "SSO ENABLED",
Value = false
},
};
NameValuePairs2 logonProperties = new NameValuePairs2
{
new NameValuePair2
{
Name = "ClassName",
Value = modelClassName
},
new NameValuePair2
{
Name = "Internal Connection ID",
Value = Guid.NewGuid().ToString()
}
};
foreach (CrystalDecisions.Shared.IConnectionInfo connection in doc.DataSourceConnections)
{
connection.SetLogonProperties(logonProperties);
}
foreach (CrystalDecisions.CrystalReports.Engine.Table table in doc.Database.Tables)
{
//TableLogOnInfo info = table.LogOnInfo;
TableLogOnInfo newInfo = new TableLogOnInfo();
newInfo.TableName = modelClassName;
DbConnectionAttributes newAttributes = new DbConnectionAttributes();
newAttributes.Collection = connectionProperties;
newInfo.ConnectionInfo.Attributes = newAttributes;
newInfo.ConnectionInfo.LogonProperties = logonProperties;
newInfo.ConnectionInfo.ServerName = modelClassName;
newInfo.ConnectionInfo.Type = ConnectionInfoType.CRQE;
newInfo.ConnectionInfo.UType = 5;
table.ApplyLogOnInfo(newInfo);
string location = table.Location;
table.SetDataSource(testValues2);
// table.Location = "WPFTest_Filds3"; // Exception here
}
this.crystalReportsViewer1.ViewerCore.ReportSource = doc;
this.crystalReportsViewer1.Owner = this;
this.Grid1.Children.Add(this.crystalReportsViewer1);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
}
}
But I getting an Exception like:
Failed to load database information.
Error in File Report4 10384_8240_{4CDE0A62-05A9-4CBA-8A41-B185B3A3946A}.rpt:
Failed to load database information.
Tell me please, how I can correct my code for success.
Thank you.