现在我要从这个表中,根据formularid(公式编号),选择相应的公式,如formularid=9,,然后选择formularindex=1时候,从tablename=labellist查询出columname=createdate下的所有值,,然后再查询formularindex=2的tablename=labellist查询出columname=id下的所有值,,接着再查询formularindex=3的tablename=labellist查询出columname=type下的所有值,,,接着再查询formularindex=4的tablename=Partslabel查询出columname=id下的所有值....直到formlarid=9的formularindex为最大值5时查询结束,,,
然后把以上查询得到的各个columname下的值得依次串起来,打印出来,,,
比如我要得到string str1="formularindex=1时候,从tablename=labellist查询出columname=createdate下的第一个值"+"formularindex=2的tablename=labellist查询出columname=id下的第一个值"+...+"formularindex=4的tablename=Partslabel查询出columname=id下的第一个值"+...然后再得到str2="...的第一个值"+"...第二个值"+...+"...第二个值"+...
...
str3="...的第二个值"+ "..的第一个值"+...+...这个怎么做呢?高手帮忙啊?以下是我写的方法的一部分代码,写到这里继续不下去了,,思维很乱,一直都想不通了,,请大家帮忙,谢谢啦!!
项目进行到这里,最关键的地方了,
 public void GetPrintExpress()
        {
            string formularId=GetFormularId();
            string sqlcmd = "select count(*) from BarPrint.dbo.BarFormularEntry where formularId=" + formularId;
            int count = int.Parse(op.ExcSqlCmdReturn(sqlcmd, "BarFormularEntry"));
            for (int i = 1; i <= count; i++)
            {
                string sql = "select tableName,columnName from BarPrint.dbo.BarFormularEntry where formularIndex=" + i;
                DataSet ds = op.SelectInfo(sql, "BarFormularEntry");
                string tableName = ds.Tables[0].Rows[0][0].ToString();
                string columnName = ds.Tables[0].Rows[0][1].ToString();
                string sqlcmd2 = "select " + columnName + " from " + tableName;
                DataSet ds2 = op.SelectInfo(sqlcmd2, "columnNameTable");
                string sqlCount = "select count(*) from " + tableName;
                int countc = int.Parse(op.ExcSqlCmdReturn(sqlCount, "numTable"));
                string[] columnValues;
                for (int j = 0; j < countc; j++)
                {
                    columnValues = new string[j];
                    columnValues[j] = ds2.Tables[0].Rows[j][0].ToString();                  
                }
                StringBuilder sb = new StringBuilder();
                ...
                ...            }
        }

解决方案 »

  1.   

    晕,本来想给帖子设置100分的,结果忘记设置就提交了,现在CSDN怎么给帖子加分啊?
    对不起啊,分数设置太少了!
      

  2.   

    不明白你的意思。建议学习下“GROUP BY ”SQL 语句后再把问题描述一遍。
      

  3.   

    不知道LZ是否是要实现类似JS中eval("1+2+3")的功能??
      

  4.   

    这么做可是需要反复连接数据库啊。
        string  sql="select index,tablename,columnname from 表名 where id="+fid;
      //这里某些字段我简化了,换成你实际应用的拼写即可。表名没仔细看,用汉字代替了。  sqlcommand  comm=new sqlcommand(sql,conn);  sqldatareader dr=comm.executereader();
      struct  names
      {  string  tablename;
         string  columnname;
         public names(string s1,string s2)
        { tablename=s1;
          columnname=s2; 
        }
       }  
      list<names>  lis=new list<names>();
      while(dr.read())
      {  names  n=new names(dr["tablename"].tostring(),dr["columnname"].tostring());
         lis.add(n);
      }
       dr.dispose();
       comm.dispose();
       conn.close();
       string  s=null;
       foreach(names n in lis)
      {  string s="select n.columnname from"+n.tablename;//没理解错的话,好像楼主没提到有where条件
         sqlcommand comm2=new sqlcommand(s,conn);
         conn.open();
         sqldatareader dr=comm.executereader();
          while(dr.read())
          { s+=dr[""].tostring();
           }
          dr.dispose();
          comm2.dispose();
          conn.close();
      }