先设计表:
表里面有编号字段
query1.close;
query1.sql.clear;
query1.sql('select * from  编号表');
query1.open;
query1.last;
temp:=query1.fieldbyname('编号').asstring;
if temp<>'' then
jls:=strtoint(temp)
else
jls:=0;
k:=jls+1;
s:=inttostr(k);
if k<10 then s:='00'+s
else if k<100 then s:='0'+s;

解决方案 »

  1.   

    先设计表:
    表里面有编号字段
    query1.close;
    query1.sql.clear;
    query1.sql('select * from  编号表');
    query1.open;
    query1.last;
    temp:=query1.fieldbyname('编号').asstring;
    if temp<>'' then
    jls:=strtoint(temp)
    else
    jls:=0;
    k:=jls+1;
    s:=inttostr(k);
    if k<10 then s:='00'+s
    else if k<100 then s:='0'+s;
      

  2.   

    千万不要用自增字段, 这个鸟东西, 自增了还没法清除, 不能回到零,回到零还得重新建表,或者改起来很麻烦。谁能它就是傻子, 我是指sql server7 or 2000
      

  3.   

    以前vfp使用recc() 函数得到表中的记录总数,然后+1就可以得到新纪录号.
    至于用其他数据库,可以用上面的做法,设定一个字段为自动增加,另外,也可以用一下方法,不妨一试:
        table1.fieldbyname('编号').asinteger:=table1.recordcount; //表中的记录总和
      

  4.   

    Query1.Close;
    Query1.SQL.Add('select max(CompanyNo) from Company');
    Query1.Open;
    Edit1.Text := Query1.Fields[0].AsString;