日期:2014-05-20  浏览次数:20942 次

winform在打开水晶报表界面要登入ID和密码
在我的电脑上面不会出现这样的问题再别人的电脑上面就会出现这样的问题

我的报表功能是

报表数据库路径





------解决方案--------------------
这两篇文章都没问题,问题是你制作报表的方法
你做的时候,是直接连mdb文件的
而代码,却是以PUSH方式进行的,也就是说,这种代码,报表的数据源应该是一个dataset,而不是你的mdb

改造起来倒是比较简单

myReport.SetDataSource(ds);

这一句,改成
//定义水晶报表的数据库连接信息
        ConnectionInfo connectionInfo = new ConnectionInfo();        
        connectionInfo.ServerName = @"C:\My Documents\Visual Studio 2005\WebSites\CrystalReportsWebSite2\employee.mdb"; //实际路径
        //将数据库信息传递给报表
        SetDBLogonForReport(connectionInfo, myReport);

另外增加如下函数定义

  
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
    {
        Tables tables = reportDocument.Database.Tables;

        foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
        {
            TableLogOnInfo tableLogonInfo = table.LogOnInfo;
            tableLogonInfo.ConnectionInfo = connectionInfo;
            table.ApplyLogOnInfo(tableLogonInfo);

        }
    }

------解决方案--------------------
如过你用的方法是先建立数据集,那么数据集的名称要和ds中的表名相同。即假如数据集名称为:mytable则da.fill(ds,"mytable")要同时为mytable
------解决方案--------------------
引用:
您能不能把详细的代码贴出来了,还有您是不是首先新建一个数据集了,还是怎么做了,请您把步骤和代码贴出来行不


对,因为我是用PUSH模式,所以必然要先创建数据集DataSet1,代码如下:

            string ConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\Database\Database1.mdb";  //我这边的.mdb数据库放在启动项目bin->Debug->Database文件夹下
            OleDbConnection conn = new OleDbConnection(ConnString);

            string strSQL = "select * from table";//这边select的字段名及类型要和数据集中的数据表结构(名称及类型)保持一致
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, conn);
            DataSet1 ds = new DataSet1();
            da.Fill(ds.TableA);  //填充到数据集DataSet1的TableA表(我数据集新建了一个TableA表)   

            CrystalReport1 myReport = new CrystalReport1();
            myReport.SetDataSource(ds);  //为报表设置数据源   
            crystalReportViewer1.ReportSource = myReport;