求助:
String sql1 = "select sum(nvl(i.qty,0.00))-sum(nvl(p.qty_req,0.00)) as \"可用量\"  from process_req p,item_stock i  where p.item_no='" + item_no + "' and i.item_no = '" + item_no + "' and p.status_id = 'P'";            //连接数据库进行更新
            connOracle conno = new connOracle();
            conno.OpenConn();
            DataSet ds = conno.queryDB(sql1);
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count> 0)
            {
                //DataRow dr = dt.Rows[0];
               // decimal q = decimal.Parse(dr.ToString());
                //如果可用量大于需求量
                if (decimal.parse(dt.Rows[0][0].ToString())>= 2.1)
                {
                    //int aa = int.Parse(dt.Rows[0][0].ToString());
                    MessageBox.Show("可用量是:" + aa + "可以进行足料处理");
                }
我使用上面的语句来查询数据库,并计算结果,在语句 if (decimal.parse(dt.Rows[0][0].ToString())>= 2.1)
处提示输入字符串格式不正确!!!!请问这是怎么回事,我该怎么办,我式过很多方法了都麽用

解决方案 »

  1.   

    select 值可以查出来的,是-16
      

  2.   

    dt.Rows[0][0].ToString()值不是数值型,调试看看具体值
    用decimal.TryParse判断
      

  3.   

    把这个值:dt.Rows[0][0].ToString()弄出来看看.
      

  4.   

    请问dt.Rows[0][0].ToString()这一句输出结果多少?
    你要点到dt里面看结果是什么东西,如果有值才行的呀?
          double result=Convert.ToDouble(dt.Rows[0][0].ToString());
         if (result>=2.1)
         {
         //int aa = int.Parse(dt.Rows[0][0].ToString());
         MessageBox.Show("可用量是:" + aa + "可以进行足料处理");
         }你看看这样行不?呵呵~~
      

  5.   

    調試一下dt.Rows[0][0].ToString()到底有沒有值輸出。如果沒值,是NULL的話,會出錯的。
      

  6.   

    decimal.parse(dt.Rows[0][0].ToString()
    你这是什么类型!?
    2.1 你这个又是什么类型!?
      

  7.   

     就像楼上说的
      关键是 看decimal.parse(dt.Rows[0][0].ToString() 
     输出的是什么 
      

  8.   

    dt.Rows[0][0].ToString()这个没有值啊,NND 怎么回事啊,sql语句在plsql里是查询出来的啊
      

  9.   

    我是想把查询出来的值转化为double类型与2.1比较呢
      

  10.   

    TryParse格式化输出,DBNUll.Value判断是否为null
      

  11.   

    你在decimal.parse(dt.Rows[0][0].ToString() 这个地方加个断点,看看dt.Rows[0][0].ToString() 的值是多少。如果是null你肯定不能转化了。如果是null,那就在sql文那里加Isnull(selectedvalue,0),把null值转换成0.
      

  12.   

    我照楼上说的那样 把sql语句改成这样就可以了,
                String sql1 = "select nvl(sum(nvl(i.qty,0.00))-sum(nvl(p.qty_req,0.00)),0.0) as \"可用量\"  from process_req p,item_stock i  where p.item_no='" + item_no + "' and i.item_no = '" + item_no + "' and p.status_id = 'P'";
      

  13.   

    但是有一点,我的sql语句不可能查询出null来呀。我在两个相减的数已经作了null到0.0的转换了呀!怎么还会出现null呢
      

  14.   

    必须使用强制转换在这两种类型之间进行转换
    (decimal)(dt.Rows[0][0].ToString())
      

  15.   


    运算符“>=”无法应用于“decimal”和“double”类型的操作数
      

  16.   

    貌似我的sql语句有点问题,马德呀,咋办呢!
      

  17.   

    sql='select sum(i.qty)/count(i.qty)-sum(p.qty_req) \"可用量\"  from process_req p,item_stock i  where p.item_no='R502000192' and i.item_no = 'R502000192' and p.status_id = 'P''
    这样旧对了,谢谢