主要是用于订单表的订单号,客户规定一定要顺序增大,中间不能缺少。

解决方案 »

  1.   

    第一种方法:
      如楼上所说,建立键值表,如张三操作员订单编号从A00001到A00199,李四从B00001到B000199等。
    第二种方法:
      用全局锁。即建立一个全局表,将最新的编号存在表里,每次需要新增时将编号从中取出并将记录锁定,保存完成后再释放锁。但要考虑维护这个锁很麻烦,万一不正常退出或是突然断电就会造成永远锁定了那个值。可以考虑锁超时和定时解锁!
      

  2.   

    yczyk能详细介绍一下第二种方法吗?或者能给个例子?谢谢大家了。
      

  3.   

    可以先向服务器端申请id(首先把ID设置为主键),这是如果多个客户端申请到一个id,则只有一个写入成功,其它客户端会返回错误记录的数据(这里假设写一条记录,更新一条记录,所以写入主键冲突返回的错误记录为1),如果返回的错误记录>0,则再次提出申请,一直到写入成功。
      我的一个系统就是这么搞定的,希望对你有点用处。
      

  4.   

    自增字段当然也可以,但是如果客户要求ID形式为0001,0002,或者A0001...等就不好弄了,还要在显示地方进行换算,
      

  5.   

    在CreateTable中间设置自增字段,主键以及约束条件
      

  6.   

    编号表 no(id varchar(10),value int)
    no.filter:='id='''+添加记录的类型+'''';
    no.filted:=true;
    no.open;
    no.edit;
    i:=no['value'];
    dingdan.filter:='id='''+定单的类型+'''';
    dingdan.filtered:=true;
    dingdan.open;
    dingdan.edit;
    dingdan['定单编号']:=i  //最新的记录编号;
    dingdan.post; 
    i:=i+1;             
    no['value']:=i;  //编号表更新; 
    no.post;