想求一个当前年+当前月+五位自增数的编号,
每个月那五位都自动返回原始值
结果如下:
20060900001
20060900002
20060900003
...
20061000001
20061000002
20061000003
...
private string GetOrderSerial(string dates)
        {            
            string str = obj.GetField("SELECT count(*) FROM t_business_order WHERE Order_Time=month(getdate())");
            string num;
            if( str == "0")
            {
                num = dates+Convert.ToString(Convert.ToInt32(str)+1);
            }
            else
            {
                str = obj.GetField("SELECT TOP 1 order_id FROM t_business_order ORDER BY id DESC");
                num = Convert.ToString(int.Parse(str)+1);
            }
            return num;
        }

解决方案 »

  1.   

    1.            string str = obj.GetField("SELECT count(*) FROM t_business_order WHERE Order_Time=month(getdate())");//这里有逻辑问题,order_time里放的都是月份?应该至少是年月吧。month(getdate())")是求月份?如果是求月份就有问题
    2.   num = dates+Convert.ToString(Convert.ToInt32(str)+1);
         这句可以简写
         num = dates+"1";3.    str = obj.GetField("SELECT TOP 1 order_id FROM t_business_order ORDER BY id DESC");
        这句应该有where Order_Time=XXX;的条件
      

  2.   

    建议你用自增字段会简单些。如果按照你这个表设计,可以如下:
    "SELECT count(Order_Time) FROM t_business_order WHERE Order_Time like '200609%'"
    你把时间的获得放到程序当中。其次你的做法,把ID的获得,与数据的插入分开,这有可能造成重复,毕竟是两个步骤。
    修改此问题的建议是,把这两步放到存储当中,也就是ID的获得和数据的插入要保持完整性。