up
只能up.自己也很想知道。

解决方案 »

  1.   

    我这样做没遇到问题:
    DataSet thisDataSet = new DataSet();
    rptCompact rptComp = new rptCompact();
    SqlDataAdapter thisAdapter = new SqlDataAdapter(sqlString,thisConn);
    thisAdapter.Fill(thisDataSet,"Compact");
    rptComp.Database.Tables[0].SetDataSource(thisDataSet);
    rptComp.Database.Tables[0].LogOnInfo.ConnectionInfo.ServerName = strServer;
    crystalReportViewer1.ReportSource = rptComp;
      

  2.   

    你的报表中有没有参数字段啊?如果有的话设置一下ReportViewer的参数字段值!
      

  3.   

    没有参数。如果我在设计报表时,在设计器中更改了数据源为Credit2_3,那么取得的数据就是Credit2_3的。但是--我不可能在每次改数据库名字后,为每个报表都重新打开报表,更改一次数据源嘛。真的要抓狂了自己UP
      

  4.   

    目前.NET提供的水晶报表设计并不能满足你的需求。
      

  5.   

    我搜索了csdn上所有与“水晶”,“Crystal”相关的帖子,都没有找到我需要的怎么办嘛5~~~~~~~~~~
      

  6.   

    如果你动态的连接数据库到dataset,你在水晶报表中用到的数据源dataset和你的数据库没有直接的关系,你可以用同一个dataset连接不同的数据库,只要查询出的字段名和类型一样就可以。
    我不明白你为什么非要更改数据源(即dataset)。在目前.NET提供的水晶报表设计没有此功能。
      

  7.   

    TableLogOnInfo logOnInfo = new TableLogOnInfo ();
    for(int i=0;i<Rpt.Database.Tables.Count;i++)
    {
    logOnInfo.ConnectionInfo.ServerName = ServerName;
    logOnInfo.ConnectionInfo.DatabaseName = DBName;
    logOnInfo.ConnectionInfo.UserID = User;
    logOnInfo.ConnectionInfo.Password = Pwd;
    Rpt.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
    }
    试一下这样来改变数据源
    楼上说的是PUSH的方法,你也可以考虑一下。但是我觉得如果数据不需要特殊处理的话用PULL方式会更方便!
      

  8.   

    数据库你不是在web.config中文件配置,需要时在修改就成了,你的程序需要在什么时候作数据库的更换,两个数据库的表结构是一样的吗?
      

  9.   

    唉,自己搞定了,CSDN又让我失望了(同时还有水晶报表这个破东东)
    不过还是谢谢大家的帮助:)---------------------------
    找出了两种解决方法。
    方法一:这是我找出来了:)
    不使用水晶报表中的向导连接DB中的TABLE,而是使用命令(Command)方法健报表的SQL。用这种方法后,显示报表时,它就不会再到以前的DB中找数据了。方法二:这是我同事找到的
    foreach( CrystalDecisions.CrystalReports.Engine.Table  tbl in rep.Database.Tables)
    {
    log = tbl.LogOnInfo;
    log.ConnectionInfo = conn;
    tbl.ApplyLogOnInfo(log);
    //********  注意下面这句!关键
    tbl.Location = "your db name" + "." + tbl.Location;
    }
    就是这个属性,如果你跟踪,它显示的是你的表名,比如叫table1,但实际上,它会在前面加入老DB的名称,这样你取得的就是以前DB的数据,水晶报表是不是很瓜:(最后,为了不改报表,我们用的是第二种方法。-------------------
    另外,我还想提醒大家一点,如果你是在WEB上用水晶报表,并且要打印或者导出功能(我想,大部分人都需要吧),就不能给报表控件所在的Page以URL的方式传参数。因为水晶报表中打印和导出功能都是通过URL,并且以打开新页面的方式来实现的,而不像其它ASP.NET控件是提交到当前页面的方式实现。--------------------
      

  10.   

    忘记说了,为了给水晶报表控件所在页面传参数
    我都是把参数写入Session中进行传递的,真是没办法:(