Hashtable table = new Hashtable();
if (productName.Trim().Length > 0)
{
  table.Add(Management.KEY_PRODUCT_NAME, productName);
}
if (inOrderNo.Trim().Length > 0)
{
  table.Add(Management.KEY_IN_ORDER_NO, inOrderNo);
}
DataTable data = null;
SearchPirceOrder search = new SearchPirceOrder();
if (orderType.Equals("1"))
{
  data = search.searchDiscountOrder(table);
}public DataTable searchDiscountOrder(Hashtable table)
{
  StringBuilder sql = new StringBuilder(
  "select master.discount_master_id,detail.product_name,item.prior_price,item.price ")
  .Append("from PRICE_DISCOUNT_ORDER_MASTER master ")
  .Append("join PRICE_DISCOUNT_ORDER_ITEM ITEM ON master.discount_master_id = item.master_id ")
  .Append("join lms_product_detail detail ON item.detail_id = detail.detail_id ");
  StringBuilder where = new StringBuilder(" where master.discount_master_id is not null ");
  try
  {
    if(table.ContainsKey(Management.KEY_PRODUCT_NAME))
    {
       where.Append(" and detail.product_name like '" + table[Management.KEY_PRODUCT_NAME] + "' ");
    }
    if (table.ContainsKey(Management.KEY_IN_ORDER_NO))
    {
       where.Append(" and master.discount_master_id = '" + table[Management.KEY_IN_ORDER_NO].ToString().Trim() + "' ");
    }                
  }
  catch (Exception ex)
  {
    ex.ToString();
  }
  sql.Append(where).Append(" order by discount_master_id ");
  DataBase db = new DataBase();
  db.openSQLServer();
  SqlDataReader re = db.SqlReader(sql.ToString());
  System.Data.DataTable s = new System.Data.DataTable();
  s.Columns.Add("");
  s.Columns.Add("单据号");
  s.Columns.Add("商品名称");
  while(re.Read())
  {
     s.Rows.Add(new Object[] { "1",re["discount_master_id"], re["product_name"];}
     db.closeSQLServer();
     return s;
  }
}这是别人写的代码,其中id,name这二个字段在窗体里是2个textbox,通过Hashtable存储和传递这二个字段。
点击按钮时,可以把所有的数据显示出来。
问题是:窗体里的id和name的textbox,向里面写一个不存在的id或者name时,肯定没有数据显示,但是我想弄个提示MessageBox,不晓得写在那里。主要是别人写的代码,我现在不知道改哪里?
  谢谢

解决方案 »

  1.   

    if (productName.Trim().Length > 0) 

      bool exitname = false;
      //判断是否存在 exitname 改变
      if(exitname )
      {MessageBox.Show("产品名称不存在");}
      else
      table.Add(Management.KEY_PRODUCT_NAME, productName); 

    if (inOrderNo.Trim().Length > 0) 
    {
      bool exitid= false;
      //判断是否存在 exitid改变
      if(exitid )
      {MessageBox.Show("产品序号不存在");}
      else
      table.Add(Management.KEY_IN_ORDER_NO, inOrderNo); 

      

  2.   

    1楼说的好像有点问题吧
      如果输入一个错误的productName,运行开始后,exitname怎么知道productName是错误的而进行改变?
      

  3.   

    最后几行的代码
      while(re.Read()) 
      { 
        s.Rows.Add(new Object[] { "1",re["discount_master_id"], re["product_name"];} 
        db.closeSQLServer(); 
        return s; 
      }改为:
      if(!re.Read())
      {
          MessageBox.Show(你的提示信息);
      }
      else
      {
      while(re.Read()) 
      { 
        s.Rows.Add(new Object[] { "1",re["discount_master_id"], re["product_name"];} 
        db.closeSQLServer(); 
        return s; 
      }
    }
      

  4.   

    写错了,少写了点
    应该是这样:  if(!re.Read()) 
      { 
          MessageBox.Show(你的提示信息); 
      } 
      else 
      {
     s.Rows.Add(new Object[] { "1",re["discount_master_id"], re["product_name"];} 
      while(re.Read()) 
      { 
        s.Rows.Add(new Object[] { "1",re["discount_master_id"], re["product_name"];} 
        db.closeSQLServer(); 
        return s; 
      } 
    }