本帖最后由 abel_fly 于 2010-08-17 14:23:38 编辑

解决方案 »

  1.   

    单号直接:
    string id = DateTime.Now.ToString("yyyyMMddHHmmss");
      

  2.   

    随机数都伪随机,不保证完全一致。销售单编号不能是完全随机的,市面上通常是机构编码+日期+当天序号。生成编码的时候,要用个lock 来保证同一时刻只执行一次。销售单是有主表和子表的,程序添加完主表以后就可以解锁了。速度是非常非常快的。
      

  3.   

           public string InitBarCode()
            {
                string id = "XS";
                Random r = new Random();
                id += DateTime.Now.Second.ToString().Length == 1 ? "0" + DateTime.Now.Second.ToString() : DateTime.Now.Second.ToString() + r.Next(100000000).ToString();
                return id;
    }
    ===============================
    这个代码的可靠性巨差。
    多次调用 DateTime.Now.Second.ToString() 很可能最终是不一样的。
    对DateTime 自带的函数非常不了解。
    直接来个 DateTime.Now.ToString("ss");就完了。
      

  4.   

    Random有什么道理不会重复?不要滥用ViewState,怎么能用来存DataTable呢?!
      

  5.   

    Random重复很正常 Random rand = new Random(unchecked(iCount * (int)DateTime.Now.Ticks));
    变化一般都有规则如名称+日期+最大编号
    lock顺序访问对象时候使用
      

  6.   

    这个问题我遇到了,
    我的处理是 插入数据时查询已有数据,然后加1
    操作类型+日期(yyyy-MM-dd)+已有数据加1(4位)!