如何设置 Crystal 报告连接信息
How to set Crystal reports Connection info
我使用 Crystal 报告来报告我的申请。问题是我不知道如何
为 Crystal 报告设置连接信息。这是我试过的代码:
private void button5_Click(object sender, EventArgs e)
{
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;
crConnectionInfo.ServerName = ".\SQLEXPRESS";
crConnectionInfo.DatabaseName = "GestStock.mdf";
crConnectionInfo.UserID = "";
crConnectionInfo.Password = "";
CrTables = cryRpt.Database.Tables;
cryRpt.Load("C:\Documents and Settings\Administrateur\Mes documents\GestionStock\GestionStock\CrystalReport1.rpt");
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
但它不起作用我收到了这条错误消息:
Chemin d'accès au fichier de rapport non valide (Invalid report file path)
PS:这是我的 sql 服务器数据库的连接字符串:
"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\DOCUMENTS AND SETTINGS\ADMINISTRATEUR\MES DOCUMENTS\GESTIONSTOCK\GESTIONSTOCK\GestStock.mdf;Integrated Security=True;User Instance=True";
那么如何正确设置呢?
Crystal Reports数据源是基于DataSet的,所以你要先初始化一个DataSet的实例class,并用您的 DataSet 中的信息填充它,然后根据您的需要设置其参数。
尽管如此,您的错误信息:
Chemin d'accès au fichier de rapport non valide (Invalid report file path)
声明您报告的文件路径无效。所以这与未分配或错误分配的连接字符串无关。
这是一个有趣的答案,展示了如何使用 DataSet 来填写 Crystal 报告:
- How to fill in data from dataset to crystal report?
确保您的报告是从预期的文件路径加载的,并且它可以访问它(可能并发访问是问题的原因)?
一旦您的报告按预期加载,那么我想您应该尝试使用数据集来填充报告并使用它设置其数据源,如链接的答案中所示。
这样,您的连接字符串将分配给用于实例化 SqlCommand 的 SqlConnection,然后您的命令将传递给 SqlDataAdapter.SelectCommand 属性。这样,您可以通过在连接字符串中指定 Integrated Security=true
并在打开它之前将其分配给 SqlConnection 实例来使用默认凭据。
基本代码是这样的:-
SqlConnection cnn ;
string connectionString = null;
string sql = null;
connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user
id=USERNAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "SELECT columnName FROM tableName";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "Product");
MessageBox.Show (ds.Tables[1].Rows.Count.ToString());
cnn.Close();
CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
我使用 Crystal 报告来报告我的申请。问题是我不知道如何
为 Crystal 报告设置连接信息。这是我试过的代码:
private void button5_Click(object sender, EventArgs e)
{
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;
crConnectionInfo.ServerName = ".\SQLEXPRESS";
crConnectionInfo.DatabaseName = "GestStock.mdf";
crConnectionInfo.UserID = "";
crConnectionInfo.Password = "";
CrTables = cryRpt.Database.Tables;
cryRpt.Load("C:\Documents and Settings\Administrateur\Mes documents\GestionStock\GestionStock\CrystalReport1.rpt");
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
但它不起作用我收到了这条错误消息:
Chemin d'accès au fichier de rapport non valide (Invalid report file path)
PS:这是我的 sql 服务器数据库的连接字符串:
"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\DOCUMENTS AND SETTINGS\ADMINISTRATEUR\MES DOCUMENTS\GESTIONSTOCK\GESTIONSTOCK\GestStock.mdf;Integrated Security=True;User Instance=True";
那么如何正确设置呢?
Crystal Reports数据源是基于DataSet的,所以你要先初始化一个DataSet的实例class,并用您的 DataSet 中的信息填充它,然后根据您的需要设置其参数。
尽管如此,您的错误信息:
Chemin d'accès au fichier de rapport non valide (Invalid report file path)
声明您报告的文件路径无效。所以这与未分配或错误分配的连接字符串无关。
这是一个有趣的答案,展示了如何使用 DataSet 来填写 Crystal 报告:
- How to fill in data from dataset to crystal report?
确保您的报告是从预期的文件路径加载的,并且它可以访问它(可能并发访问是问题的原因)?
一旦您的报告按预期加载,那么我想您应该尝试使用数据集来填充报告并使用它设置其数据源,如链接的答案中所示。
这样,您的连接字符串将分配给用于实例化 SqlCommand 的 SqlConnection,然后您的命令将传递给 SqlDataAdapter.SelectCommand 属性。这样,您可以通过在连接字符串中指定 Integrated Security=true
并在打开它之前将其分配给 SqlConnection 实例来使用默认凭据。
基本代码是这样的:-
SqlConnection cnn ;
string connectionString = null;
string sql = null;
connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user
id=USERNAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "SELECT columnName FROM tableName";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "Product");
MessageBox.Show (ds.Tables[1].Rows.Count.ToString());
cnn.Close();
CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();