C# 填充;详情;crystal报表中的节,动态显示多行

C# 填充;详情;crystal报表中的节,动态显示多行,c#,sql-server,winforms,crystal-reports,mdf,C#,Sql Server,Winforms,Crystal Reports,Mdf,我有一个crystal report,我是从存储过程填充的,但是,当我将数据库转换为MDF文件进行部署时,我无法从数据库专家连接到MDF,因为crystal reports不支持它,当我尝试动态填充报告时,一切正常,除了我有多行的“详细信息”部分外,它仅在我试图从数据表填充报告时显示第一行,因为我无法根据数据表中的行数在“详细信息”部分生成行 然后我试着: DataSet ds=新数据集(); sda.填充(ds); //如果是RPT文件 InvoiceFinal如果=新的InvoiceFina

我有一个crystal report,我是从存储过程填充的,但是,当我将数据库转换为MDF文件进行部署时,我无法从数据库专家连接到MDF,因为crystal reports不支持它,当我尝试动态填充报告时,一切正常,除了我有多行的“详细信息”部分外,它仅在我试图从数据表填充报告时显示第一行,因为我无法根据数据表中的行数在“详细信息”部分生成行

然后我试着:

DataSet ds=新数据集();
sda.填充(ds);
//如果是RPT文件
InvoiceFinal如果=新的InvoiceFinal();
IF.DataSourceConnections.Clear();
Show(ds.Tables.Count.ToString());
IF.SetDataSource(ds);
打印p=新打印();
p、 crystalReportViewer1.ReportSource=IF;
此方法返回此错误:加载数据库信息失败

我找到了上述错误的解决方案,但没有任何效果


我想知道是否有办法将行动态添加到报告的第3节中,或者是否有针对上述错误的修复方法,或者是否有其他解决方法来实现我的目标。

MDF文件必须实际位于与SQL Server位于同一台机器上的驱动器上。通常使用c:但如果d:驱动器与数据库在同一台机器上,该数据库也将工作。@jdweng它与SQL server在同一个驱动器上,但不是直接在驱动器上,它位于项目文件夹内。我认为表上的主键有问题,您只能添加一行。当您在DQL服务器中设置主键时,它只允许一行具有该值。如果旧数据库中有多行具有相同的键,则必须从列中删除主键。mdf文件可以是驱动器上的任何文件夹,只要该文件夹不是指向另一台机器的链接。@jdwen数据库工作正常,我尝试从表中打印数据以检查是否有问题,但一切似乎都正常,我试图提取的行不包含主键,因为它们是从存储过程返回的