我用datagridview 绑定Oracle 的 2个 表,两个表都显示,字段就很多
并且很多字段的小数都需要重新格式化,我的查询语句用 
string sql = "select round(表1.字段1,2),round(表1.字段2,2),round(表1.字段3,2),round(表2.字段1,2),round(表2.字段2,3),round(表2.字段3,2),……"
from 表1,表2 where TO_CHAR(表1.DATE,'YYYY-MM-DD HH24') = "
                + "TO_CHAR(表2.DATE,'YYYY-MM-DD HH24') and (表1.DATE <= TO_DATE('"
                + sDtB + "','YYYY-MM-DD HH24:MI:SS') and 表1.DATE> =TO_DATE('" 
                + sDtA + "','YYYY-MM-DD HH24:MI:SS')) order by 表1.DATE asc";sDtA 和 sDtB 是我查询时传进去的两个时间的参数,是查询某一段时间的数据。也许是都用round函数的缘故吧,感觉查询的时候会慢一些,不过这倒没什么,但是我发现我点击 datagridview 的某一列标题的时候,出现错误提示 “ROUND(表1.字段1)不是有效的排序字符串项”(错误提示中的字段1,如果点击字段2,就是提示字段2错误)
并且错误是出现在
项目的 Program.cs 的 Application.Run(new FrmMain()); 下,
这个我很奇怪,怎么会指向这呢,出错我就有点奇怪了,居然跳转到这了。

解决方案 »

  1.   

    ROUND
    返回数字表达式并四舍五入为指定的长度或精度。语法
    ROUND ( numeric_expression , length [ , function ] ) 参数
    numeric_expression精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。function是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。返回类型
    返回与 numeric_expression 相同的类型。ROUND()的用法
      

  2.   

    你们都没明白我的话,我感觉现在好像是一旦 哪个字段用 函数 ROUND() 那么就无法通过点击这一列对这个字段进行排序了,没有用 ROUND() 函数格式化的字段就可以排序
    但是我不明白就算出错为什么会跳转到 那个位置
      

  3.   

    你可以不用SQL语句进行Rund,如果用SQL的RUND的话,你还不如把精度控制低点可以使用DataGridView中的单元格格式化方式控制显示精度
      

  4.   

    string sql = "select round(表1.字段1,2),round(表1.字段2,2),round(表1.字段3,2),round(表2.字段1,2),round(表2.字段2,3),round(表2.字段3,2),……" 
    from 表1,表2 where TO_CHAR(表1.DATE,'YYYY-MM-DD HH24') = " 
                    + "TO_CHAR(表2.DATE,'YYYY-MM-DD HH24') and (表1.DATE <= TO_DATE('" 
                    + sDtB + "','YYYY-MM-DD HH24:MI:SS') and 表1.DATE> =TO_DATE('" 
                    + sDtA + "','YYYY-MM-DD HH24:MI:SS')) order by 表1.DATE asc"; 排序那里也得用参数吧,
    这样应该可以了
      

  5.   


    这个具体怎么弄,可以给点代码吗?或者谁的博客例子什么的
    回#6楼的朋友:表1.DATE ,这个是指 表1的时间字段,不能用 round()函数的