我是使用的VS2005自带的水晶报表,在WEB的应用中.
先用VS2005建立了一个数据源:DataSet1.xsd,其中有两个表:yg_check_on_statements,yg_detailed_regulations
其中yg_check_on_statements的id字段与yg_detailed_regulations的check_id字段关联.关联关系中选择的"仅外键约束 下面几个选项为none none none"代码如下:string DBConfig_sql = @"packet size=4096;user id=sa;password=123;data source=localhost;persist security info=True;initial catalog=cts";
CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport1.rpt"));
DataSet ds = new DataSet();
SqlConnection sqlCon = new SqlConnection(DBConfig_sql);
string sql = "SELECT * FROM yg_check_on_statements where id=3";
SqlCommand sqlCmd = new SqlCommand(sql, sqlCon);
SqlDataAdapter sqlAd = new SqlDataAdapter();
sqlAd.SelectCommand = sqlCmd;
sqlAd.Fill(ds, "sql");
CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["sql"]);
CrystalReportSource1.DataBind();CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind(); 
----------------------------
"SELECT * FROM yg_check_on_statements where id=3"的结果在数据库中也是有数据的.但上述代码执行后,页面总是提示"您请求的报表需要更多信息",并要求输入用户,密码这些,但是输入之后,按"显示"也没反应.如果我将DataSet1.xsd中的yg_detailed_regulations表删除掉,只保留一个表,用上述代码是可以正常显示出报表来的.本来是在报表显示的是数据是从上述两个表组合查询出来的.但没想到我只用了一个表,也有问题.请教大家,该咋解决呢??如果是要从两个表组合查询显示,该怎么做呢?
谢谢!

解决方案 »

  1.   

    使用这种方式多表也是没问题的,可能是中间xsd结构变动了但是报表里没有相应的更新
    验证数据库或重新更新下数据源
      

  2.   

    验证数据库或重新更新下数据源,我都试了,还是不行我还将原来的xsd删除了,重新建了个xsd,还是出现同样的问题
      

  3.   

    刚开始我觉得是DataSet ds = new DataSet();有问题,
    我改成DataSet1 ds = new DataSet1();结果还是不行.DataSet1.xsd中各表的字段属性跟sql-server中对应表的字段属也是一致的.
    为何我在DataSet1.xsd中建两张表,而在报表中代码中只用一张表,结果也出现那样提示呢?我的哪儿设置还没对吗?