寻找缺失位置

 数据表:ttest

id (int)              单位编号varchar(20)

    1                              00101

    1                              00102

    1                              00103

    1                              00106

    1                              00107

需要找出不连续的编号,最小的不连续编号。

这里少了00104,00105要找出00104

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using System.Data.SqlClient;
  12. public partial class test_getNext : System.Web.UI.Page
  13. {
  14.     protected void Page_Load(object sender, EventArgs e)
  15.     {
  16.         Bind();
  17.     }
  18.     private void Bind()
  19.     {
  20.         string connStr = ConfigurationManager.ConnectionStrings["hrmbookConnectionString"].ToString();
  21.         SqlConnection conn = new SqlConnection(connStr);
  22.         DataSet ds = new DataSet();
  23.         try
  24.         {
  25.             conn.Open();
  26.             string Sqlstr = "SELECT 单位编号 FROM ttest order by 单位编号";
  27.             SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn);
  28.             da.Fill(ds);
  29.             Response.Write(getNextFixed(ds, 0));
  30.         }
  31.         catch (Exception ex)
  32.         {
  33.             Response.Write(ex.ToString());
  34.         }
  35.         finally
  36.         {
  37.             conn.Close();
  38.         }
  39.     }
  40.     /// <summary>
  41.     ///  01,02,04和形式,则返回03.
  42.     /// </summary>
  43.     /// <param name="ds"></param>
  44.     /// <param name="pos">判断的列的位置</param>
  45.     /// <returns></returns>
  46.     public string getNextFixed(DataSet ds,int pos)
  47.     {
  48.         string returnCode = "01";
  49.         if (ds == nullreturn returnCode;
  50.         if (ds.Tables.Count == 0) return returnCode;
  51.         if (ds.Tables[0].Columns.Count == 0) return returnCode;
  52.         if (ds.Tables[0].Rows.Count == 0) return returnCode;
  53.         for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  54.         {
  55.             string s = ds.Tables[0].Rows[i][pos].ToString().Trim();
  56.             if (s.Length > 2) s = s.Substring(s.Length - 2);//一个参数时,表示从哪里开始截取,而不是长度。这里表示最后两位。
  57.             if (s != returnCode) break;//不为01则跳出,这种思路比较奇怪,但是这里正好实用。
  58.             if (s == "99"return "";//不能超过三位
  59.             //格式输出,比如:one{0},two{1}.string.Format("{0:C3}", 2)输出$2.000
  60.             //这里把1转化为01
  61.             returnCode = string.Format("{0:00}", Convert.ToUInt16(s) + 1);//touint16不需要长整型
  62.         }
  63.         return returnCode;
  64.     }
  65. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值