我用 for (int k = 3; k < (numberOfColumns +1)/2+2; k++) {%>
    <td width="50" height="24" nowrap><div align="center" class="style7"><%=rs.getFloat(k)%></div></td>
    <%} 没问题,网页上能显示结果
但是将rs.getFloat(k)换成rs.getFloat(k+7) 就会提示:
javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引将rs.getFloat(k)换成rs.getFloat(7) 提示:javax.servlet.ServletException: No data found

解决方案 »

  1.   

    可能你的数据库查出来的字段不到7位,或者是你的字段类型不正确。在rs.getFloat(7)这里面的数字是指你的SQL语句所查询出来的字段的其7个字段的值
      

  2.   

    <%rs = Bean1.executeQuery(txtsql);
       rs.next();
       for (int k = 3; k <= (numberOfColumns +2)/2; k++) {%>
        <td width="50" height="24" nowrap><div align="center" class="style7"><%=rs.getFloat(k)-rs.getFloat(k+(numberOfColumns-2)/2)%></div></td>
        <%}%>我现在用的这样:  其中:numberOfcolumns=14我数据库中的字段有 : 1 2   3   4   5   6   7   8 
                             9   10  11  12  13  14
     我现在要把3和 9 里对应的数相减得出的结果显示出来
     上面的提示错误就是:无效的字符索引  高手帮忙看一下了!
      

  3.   

    txtsql 的值是什么,可以贴出来看看吗
      

  4.   

    rs.getFloat(7) or  rs.getFloat(k)
    这里的参数是表的列名,你的参数好像不对吧
      

  5.   

    不对吗? 我用<%=rs.getFloat(k)%>  就能现实3-8 列里的数据,用<%=rs.getFloat(k+(numberOfColumns-2)/2)%>可以现实9-14列的数据啊!
    但是相减就出问题了!
      

  6.   

           dati       k1     ad1      ag1    ad2   ag2  ad3  ag3    ad4       ag4     ad5     ag5    ad6     ag6
    2008-6-1 8:00:00 40.41 42.677 41.295 41.682 41  42 41.32 41.941 41.606 42.323 41.322 42.27 41.58txtsql 的数据
      

  7.   

    System.out.println(k);
    System.out.println(k+7);
    看看哪个k不对
      

  8.   


     你数据库中的字段是否为: (numberOfColumns +1)/2+1个,并且都是float或 int类型吗?
      

  9.   

    9楼:得出来的数是: 3,4,5,6,7,8
                        9,10,11,12,13,1410楼: 除第1个字段是日期+时间外,其他全是float类型
    数据库:      dati        k1     ad1       ag1     ad2   ag2   ad3   ag3     ad4       ag4     ad5     ag5    ad6     ag6 
       2008-6-1 8:00:00 40.41 42.677 41.295 41.682 41  42 41.32 41.941 41.606 42.323 41.322 42.27 41.58 
      

  10.   

    那就没有问题了,会不会错误不在这里又比如float字段值会不会是null,这样getFloat也有问题
      

  11.   

    那就奇怪了,
    <%rs = Bean1.executeQuery(txtsql);
       rs.next();
       double i=rs.getFloat(2);
       for (int k = (numberOfColumns +1)/2+2; k < numberOfColumns +1; k++) {%>
        <td width="50" height="24" nowrap><div align="center" class="style7"><%=Math.ceil((rs.getFloat(k)-i)*1000)/1000%></div></td>
        <%}%>
    这样做一点问题都没有,也就是说整个数据库中的数据都能用getFloat取出来!无论单独用 rs.getFloat(k)还是rs.getFloat(k+(numberOfColumns-2)/2) 都是没有问题的,而且也是对应从数据库中取出不同的值!唯独不能用 <%=rs.getFloat(k)-rs.getFloat(k+(numberOfColumns-2)/2)%>  他们两个相减,救救我吧!
      

  12.   

    <%=rs.getFloat(k)-rs.getFloat(k+(numberOfColumns-2)/2)%> 改为<% float f=rs.getFloat(k)-rs.getFloat(k+(numberOfColumns-2)/2)%><%=f%> 看下行不行!
      

  13.   


    这个应该是<%=rs.getFloat(k)-rs.getFloat(k+(numberOfColumns-2)/2);%>的,忘记了一个分好
    但是这样还是不行,同样出现无效字符索引的错误!
    我用数组试试看吧!
      

  14.   

    数据库里面有100个字段也没有用得看你select语句里面select了几个字段才行。
      

  15.   


    txtsql="select top 1 "+ strzd + " from U_gtjc order by dati desc";
     这样不是选择了所有字段吗?
      

  16.   

    你好好的看看,这个是对的<%=rs.getFloat(k)%>,k是for循环的值,你在写rs.getFloat(k+7)这个,这不就越界了吗?好好的想想,给你个解决方法,在初始胡的时候就把k加7:for (int k = 3+7; k < (numberOfColumns +1)/2+2; k++) {%> 
    这不就行了吗?