private decimal c_decAmount;c_decAmount = Convert.ToDecimal(p_stringColumnValue); p_stringColumnValue为string类型参数,为什么会提示:输入字符串的格式不正确。而且提示将字符串转换为DateTime.明明是转换为decimal类型啊?用户代码未处理 System.FormatException
  Message=输入字符串的格式不正确。
  Source=mscorlib
  StackTrace:
       在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
       在 System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt)
       在 System.Convert.ToDecimal(String value)
       在 CaliforniaFitness.Data.Table.SaleHeader.TableData.SetValueByColumnName(String p_stringColumnName, String p_stringColumnValue) 位置 C:\Documents and Settings\Administrator\桌面\2011-12-13NEWPOS\POS_Code\CaliforniaFitness.Data.Table\CaliforniaFitness.Data.Table.SaleHeader\TableData.cs:行号 168
       在 CaliforniaFitness.Data.Table.DBTable.BaseTable.Next()
       在 CaliforniaFitness.Data.Table.DBTable.BaseTable.BindToDatable(DataTable p_dtTable)
       在 CaliforniaFitness.Data.Table.DBTable.BaseTable.SelectAll(String p_stringWhereClause, String p_stringOrderBy)
  InnerException: 

解决方案 »

  1.   

    跟踪调试一下看看报错时p_stringColumnValue变量的值就明白了
    另外从你的报错堆栈中没看到你所说的“提示将字符串转换为DateTime”,错误信息很正常也很明显了肯定是p_stringColumnValue值有问题
      

  2.   

     打个断点,看下p_stringColumnValue值吧,说不定眼花手抖,用错了哪,呵呵
      

  3.   

    我看到了p_stringColumnValue传进来的是空值
      

  4.   

    那当然会报错了,可以在转换之前做一个为空的判断,也可以像下面这样处理
    decimal d = 0;
                decimal.TryParse(p_stringColumnValue, out d);
    这样有个默认值以保证不出错
      

  5.   

     protected override void SetValueByColumnName(string p_stringColumnName, string p_stringColumnValue)
            {
                switch (p_stringColumnName)
                {
                    case "Amount": c_decAmount = Convert.ToDecimal(p_stringColumnValue); break;
                }
            }
    谁能帮我解决下,p_stringColumnValue为""是怎么办?
      

  6.   

    楼上的decimal.TryParse(p_stringColumnValue, out d);这个方法为bool行方法吧?
      

  7.   

    在哪加判断啊,这个是在switch语句中赋值的
      

  8.   

    case "Amount": 
         if(p_stringColumnValue不是empty且不是null)
         {
            c_decAmount = Convert.ToDecimal(p_stringColumnValue);
         }else
         {
           c_decAmount=0;
         }
         break;
      

  9.   

    protected override void SetValueByColumnName(string p_stringColumnName, string p_stringColumnValue)
      {
      switch (p_stringColumnName)
      {
    if(!"".equal(p_stringColumnValue))
    {
     case "Amount": c_decAmount = Convert.ToDecimal(p_stringColumnValue); break;
      
    }
    else
    {
    处理或者、、、、、、
    }
     }
      }
    前面加个条件判断这个值是不是为空不就好了