您的位置:程序门 -> .net技术 -> c#



datatable.compute 方法中的bug


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


datatable.compute 方法中的bug[已结贴,结贴人:cnjack]
发表于:2007-03-01 09:34:30 楼主
運行環境:w2k(繁體)+net   framework   1.1   service   pack   1(kb867460-x86)-tw+vs.net2003(繁體)+crystalreport10

this.lbl96lessen.text=this.mydataset.tables[this.mydatamember].compute( "count(empl_newmon) ", "empl_newmon=96 ").tostring();
this.lbloldmon.text=convert.toint64(this.mydataset.tables[this.mydatamember].compute( "sum(empl_oldmon) ", " ")).tostring();
當this.mydataset.tables[this.mydatamember].rows.count> 0的情況下,以上代碼沒有問題;
當this.mydataset.tables[this.mydatamember].rows.count> 0的情況下,以上的第二行(sum函數)代碼出現錯誤 "物件不可以從dbnull轉換成其它型別 ",在沒有行的情況下,還sum什么,而count又沒有問題,這是程序本身的bug嗎?
发表于:2007-03-01 09:50:031楼 得分:5
你的sum()     是函数吗??       怎么看上去想是个字符串
"sum(empl_oldmon) "
发表于:2007-03-01 10:17:312楼 得分:5
this.mydataset.tables[this.mydatamember].rows.count=0时
注意这时count就是=0
这时要不报错就直接写sum(empl_oldmon)=0,ok!
发表于:2007-03-01 10:20:143楼 得分:0
convert.toint64(this.mydataset.tables[this.mydatamember].compute( "sum(empl_oldmon) ", " ")).tostring();
改成这样看看:
object   sum   =   this.mydataset.tables[this.mydatamember].compute( "sum(empl_oldmon) ", " "));

if(   sum   !=   null   )
{
    this.lbloldmon.text=sum.tostring();

}
发表于:2007-03-01 10:21:184楼 得分:0
if(   sum   !=   dbnull.value   )??
{
    this.lbloldmon.text=sum.tostring();

}
看看这样报错不。。。
发表于:2007-03-01 10:25:255楼 得分:0
maotin(liu)   :
你的這條語句
object   sum   =   this.mydataset.tables[this.mydatamember].compute( "sum(empl_oldmon) ", " "));
都會出錯
发表于:2007-03-01 10:43:176楼 得分:0
首先判断,table里行有没有值,其次在看看行里面empl_oldmon这个字段,是不是取出的数据是不是都有值,有可能取出来得是空值,
应该在sql语句里加一个处理,isnull(empl_oldmon,0)   as   empl_oldmon
发表于:2007-03-01 11:50:097楼 得分:0
樓上的,我知道該如何處理,我是想知道,這是否是一個bug?
各位在編程中是否有遇到過?
发表于:2007-03-01 11:53:218楼 得分:0
应该不是bug吧。。。。
发表于:2007-03-01 11:54:299楼 得分:20
因该只是数据类型的控制,个人认为。。。
发表于:2007-03-01 13:22:2410楼 得分:0
頂...
发表于:2007-03-02 19:27:0311楼 得分:0
抱歉,是由于在沒有記錄時,將空值來轉換成int64時出錯;正確的代碼如下;
object   oldmon=this.mydataset.tables[this.mydatamember].compute( "sum(empl_oldmon) ", "isnull(empl_oldmon,0)> 0 ");
object   newmon=this.mydataset.tables[this.mydatamember].compute( "sum(empl_newmon) ", "isnull(empl_newmon,0)> 0 ");
if(oldmon!=dbnull.value)
this.lbloldmon.text=convert.toint64(oldmon).tostring();
else
this.lbloldmon.text= "0 ";
if(newmon!=dbnull.value)
this.lbloldmon.text=convert.toint64(newmon).tostring();
else
this.lblnewmon.text= "0 ";


快速检索

最新资讯
热门点击