有一表.
 TL_ID TL_name tl_pass前提,数据里本身 不要设置自动生产主键
 让程式在添天数据时,自动生产主键值 我不明白的地方:
   第一我如何才能知道数据库里的主键值是多少?
   

解决方案 »

  1.   

    一般就是取得主键的最大值,然后加1select max(主键字段) from table取出值后+1,再赋值给数据集的该字段,然后post
      

  2.   


    为什么不要自动生成的主键呢?
    你的主键类型是什么的,整型,字符型?成的规律是什么,
    如果是整型,你select max(id)但这并不会比数据库自己生成的要好呀,效率也会受影响的
    如果是字符型,你就按照规律进行生成就行了
      

  3.   

    没搞明白楼主的"不懂如何取得已有的主键值"是什么意思,难道你的表中没有设定好的主键吗既然是已有主键值,那你肯定就该知道哪个字段是主键呀,select它的值不就可以了吗
      

  4.   

    谢谢前辈的指导.按照 BDMH 的方法.已经搞定了.这样写,不知对不对:
    doquery1.Close ;
      adoquery1.SQL.Clear ;
      adoquery1.SQL.Add('select max(tt_id) num from Tt_account');
      adoquery1.Open ;
      adoquery1.FieldByName('num');
      max:=trim(adoquery1.FieldByName('num').AsString );
      maxnum:=strtoint(max);
      maxnum:=maxnum+1;
      newnum:=inttostr(maxnum);
     
      

  5.   

    差不多
      max:=trim(adoquery1.FieldByName('num').AsString );
      maxnum:=strtoint(max);
      maxnum:=maxnum+1;
      newnum:=inttostr(maxnum);
    上面有点罗嗦newnum:= adoquery1.FieldByName('num').AsInteger+1;
      

  6.   

    如果是数值型,最好这样做select isnull(max(tt_id),0)+1 as max_id from Tt_account取出max_id值就是最大值.后面也不需要程序再加1了...呵呵,提高一点点效率.isnull()最好加一下,如果是第一次,无记录时,会报错的,要改NULL为零.