Query1.close;
Query1.clear;
query1.sql.add('select min(id)+1 from student where id+1 not in (select id from student)');
query1.open;ids:=Query1.Fields[0].asstring;ids:=Ids+1;query1.close;
Query1.clear;
Query1.sql.add('insert student values(:ids,:name....)');
Query1.paramByname('ids').asstring:=ids;
....
我就是这样实现的
原理就是取表中ID的最小值加1不在表中。。
这样就可以实现自动添加。。且当删除时中间的值还可以补充上去。。
我程序中就是这样实现的。。 

解决方案 »

  1.   

    如果你的ID是int型,你可以直接设置相关的属性。
      

  2.   

    aliyan(琳琳)的方法可能存在问题。当A用户取完ID后,并在界面上做相关操作,还没有提交之前,B用户也开始也开始做相同的动作。结果两人操作的ID就重复啦。 ^-^对Oracle数据库,可使用序列Sequence,对没有序列的数据库如SQL Server,可建一序列表模仿构造一个序列。
      

  3.   

    在数据库中做个触发器吧
    Create trigger id_add on tablename
    for insert as
    declare @hm numeric(15,0)
    select @hm=max(id)+1 from tablename
    update tablename set id=@hm where id=0;
    你插入或删除数据,id自动增加
      

  4.   

    小刀:it是int型怎样设置属性呢?具述!