报表 rpt = new 报表();
rpt.SetDataSource(DataSet11);    //* 手动设置数据集就可以了
this.ReportViewer.ReportSource = rpt;

解决方案 »

  1.   

    那这样的话,画报表的时候,这个数据集怎么引入呢?我现在都是直接用ado连接到数据库,然后直接把字段拖拽出来的。下面是我绑定crystalReportViewer1的方法:
    this.crystalReportViewer1.ReportSource = new ToDangAnReport();
    this.crystalReportViewer1.DisplayGroupTree = false;
    ToDangAnReport a = new ToDangAnReport();
    a = (ToDangAnReport)this.crystalReportViewer1.ReportSource;
    // 声明所需变量。
    TableLogOnInfo logOnInfo = new TableLogOnInfo ();
    int i = 0;
    // 对报表中的每个表依次循环。
    for (i=0;i == a.Database.Tables.Count - 1;i++)
    {
       // 设置当前表的连接信息。
        logOnInfo.ConnectionInfo.ServerName = regObject.getFilePath("server");
        logOnInfo.ConnectionInfo.DatabaseName = "HondaClub";
        logOnInfo.ConnectionInfo.UserID = regObject.getFilePath("user");
        logOnInfo.ConnectionInfo.Password = regObject.getFilePath("password");
        a.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
    }
      

  2.   

    我已经用手动绑定了,比如:
    报表 rpt = new 报表();
    rpt.SetDataSource(DataSet11);    
    this.ReportViewer.ReportSource = rpt;
    但是画报表的时候还是要用ado新建连接,然后把字段拖出来, 这样的话,打开报表的还是会弹出一个数据登陆窗口。没有人知道吗?
      

  3.   

    添加一个新的DataSet1.XSD 在设计时不要使用从ado新建连接,然后把字段拖出来
    而是要仿照从ado建连接字段拖出来写出来的格式,从新自己写以避免数据登陆窗口如对表AREA_TYPE ,写一个DataSet1.XSD
    <xs:element name="AREA_TYPE">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="REMARK" type="xs:string" minOccurs="0" />
    <xs:element name="AREA_TYPE_ID" type="xs:decimal" />
    <xs:element name="AREA_GROUP_ID" type="xs:decimal" minOccurs="0" />
    <xs:element name="TIMESTAMP" type="xs:dateTime" />
    <xs:element name="AREA_NAME" type="xs:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
      

  4.   

    问题是现在我有几张表,所以我要在xsd里重写一个包括这几个表所有字段的test ,但是其中一开始没有考虑周全,有两张表字段名都是取一样的,那怎么在test中体现吗?
    <xs:element name="test">
      <xs:complexType>
         <xs:sequence>
    <xs:element name="CARDNO" type="xs:string" />
    <xs:element name="CPH" type="xs:string" minOccurs="0" />
             <xs:element name="CARDNO" type="xs:string" />
    <xs:element name="CPH" type="xs:string" minOccurs="0" />
          </xs:sequence> 
       </xs:complexType>
    </xs:element>
    <xs:element name="UCL">
       <xs:complexType>
          <xs:sequence>
    <xs:element name="CARDNO" type="xs:string" />
    <xs:element name="CPH" type="xs:string" minOccurs="0" />
          </xs:sequence> 
       </xs:complexType>
    </xs:element>
    <xs:element name="UJS">
       <xs:complexType>
          <xs:sequence>
    <xs:element name="CARDNO" type="xs:string" />
    <xs:element name="CPH" type="xs:string" minOccurs="0" />
          </xs:sequence> 
       </xs:complexType>
    </xs:element>    
      

  5.   

    你可以在vs中打开那个rtp文件,右建数据库专家,把数据库验证去掉。
      

  6.   

    想动态管理,是吧,你可以自己
    象添加窗体一样的添加一个数据集dsYou(里面包含了dtYou的表结构)
    .cs文件中代码中,你可以建立一张表dtYou
    如果你的水晶报表文件为:rptYou你可以这样:
    加载数据到dtYou
    DataSet ds=New dsYou();
    dsYou.Tables.Add(dtYou)
    然后
    CrystalReport crtYou=New rptYou();
    crtYou.SetDataSource(ds);    
    this.ReportViewer.ReportSource = crtYou;