比如在某一个评估程序设计中,需要在新建报告时自动产生评估报告的编号,如何才能实现,请求各位大侠?谢谢!

解决方案 »

  1.   

    用SQL语句吗
    select id=identity(int,1,1),....
    from tb
      

  2.   

    好说啊,只要把数据库中的数据用order by 按编号字段从小到大排序,然后把指针移到最后一条记录上,取出编号字段的数据,然后加1不就可以了。
      

  3.   

    function Addno(OldMaxNo: String;Flag:Integer): string;  //增加凭证编号
    Var
      S:String;
    begin
        If flag=1 then
        begin
           if trim(OldMaxNo)<>''  then
           begin
              CASE  LENGTH(Inttostr(strtoint(OldMaxNo))) OF
                 1:S:='0000'+INTTOSTR(strtoint(OldMaxNo)+1);
                 2:S:='000'+INTTOSTR(strtoint(OldMaxNo)+1);
                 3:S:='00'+INTTOSTR(strtoint(OldMaxNo)+1);
                 4:S:='0'+INTTOSTR(strtoint(OldMaxNo)+1);
                 5:S:=INTTOSTR(strtoint(OldMaxNo)+1);
              end;
          END else
          begin
            s:='0001';
          end;
        end else
        begin
          if trim(OldMaxNo)<>''  then
          begin
            CASE  LENGTH(Inttostr(strtoint(OldMaxNo))) OF
               1:S:='000'+INTTOSTR(strtoint(OldMaxNo)+1);
               2:S:='00'+INTTOSTR(strtoint(OldMaxNo)+1);
               3:S:='0'+INTTOSTR(strtoint(OldMaxNo)+1);
               4:S:=INTTOSTR(strtoint(OldMaxNo)+1);
            end;
          END else
          begin
            s:='0001';
          end;
        end;  Result:=s;
    end;MaxNo:=ClientDm.ATest.GetBillNo(Sql); //获得凭证编码表当前最大编码;
    MAXNO:=ADDNO(MaxNo,0)
    写的简单,见晾
      

  4.   

    谢谢!我还有一个疑问,对于数据库中数据量非常大时用Order by 是否程序运行占用的资源及时间较长.