我参考http://www.xrss.cn/Info/12591.Html的方法来添加的,成功了,但是在  cr1.SetDataSource(table);
CrystalReportViewer1.ReportSource =cr1;
时候table就是查询到的记录,但显示出来的是表中所有记录怎么回事?
如:查询的是select * from tablename where time between xxx and xxx
显示的是select * from tablename

解决方案 »

  1.   

    数据集的配置里写你的sql语句。
      

  2.   

    添加新项,添加一个数据集,再服务器资源管理器,连接数据库。
    拖一个你要显示的表。就会自动生成个数据集。再改配置,写你的sql语句
      

  3.   

    这样sql语句不就固定了嘛? 我需要可变的查询语句,还有可能要多种查询,每种只查询一种表。
    如:sql1= select * from table1;
       sql2 = select * from table2;
    ...
      

  4.   

    string strSql;
    string strTable;
    strSql = GetQuerySql();//动态获取sql语句,查询条件由界面输入
    if (null == strSql) return;strTable = GetQueryTable();
    if (null == strTable) return;MyMySql db = new MyMySql("localhost",db,uid,pwd);
     if (null != db && db.connectDB())
     {
         if (db.sqlReadToDataSet(strSql, strTable))//将记录保存到dataset中
         {
               reportDocumnet = new CrystalReport1();            reportDocumnet = CreateReportDoc(nIndex, db.DataSet.Tables[0]);
                                                               
                  //设置动态field
                 reportDocumnet.DataDefinition.FormulaFields[0].Text = "{table.field1}"
    reportDocumnet.DataDefinition.FormulaFields[0].Text = "{table.field2}"
    reportDocumnet.DataDefinition.FormulaFields[0].Text = "{table.field3}"
    ...
                    //隐藏其他列
                    for (int i = msgList.Count + 1; i <= reportDoc.DataDefinition.FormulaFields.Count; i++)
                    {
                        string str = "tField" + Convert.ToString(i);
                        TextObject tobj = (TextObject)reportDoc.ReportDefinition.ReportObjects[str];
                        tobj.Text = "";
                    }            crystalReportViewer1.ReportSource = reportDocumnet[0];
           }
      

  5.   

    上面代码没写好不小心发了,以下是正确的,但查询的记录不对,不知道问题出在哪了。
    string strSql;
    string strTable;
    strSql = GetQuerySql();//动态获取sql语句,查询条件由界面输入
    if (null == strSql) return;strTable = GetQueryTable();
    if (null == strTable) return;MyMySql db = new MyMySql("localhost",db,uid,pwd);
     if (null != db && db.connectDB())
     {
         if (db.sqlReadToDataSet(strSql, strTable))//将记录保存到dataset中
         {
               reportDocumnet = new CrystalReport1();                                                       
                  //设置动态field
                 reportDocumnet.DataDefinition.FormulaFields[0].Text = "{table.field1}"
                 reportDocumnet.DataDefinition.FormulaFields[0].Text = "{table.field2}"
                 reportDocumnet.DataDefinition.FormulaFields[0].Text = "{table.field3}"
                 ...             reportDocumnet.SetDataSource(db.DataSet.Tables[0]); //设置数据源            crystalReportViewer1.ReportSource = reportDocumnet;
           }
    }报表中已经关联table表了,如果要输入查询条件为select * from table where field1 = 'xx';
    报表显示的记录是table中所有的记录,郁闷?
      

  6.   

    db.DataSet.Tables[0]中的记录抓断点能看到条数,跟报表显示的不一样。
    整了一天也没解决方法,谁能帮我解决,另外我在送100分...