现在g_max已经到10了,此时
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select max(g_num) as tempnum from guest');
  adoquery1.Open;
  edit1.Text:=inttostr(strtoint( adoquery1['tempnum'] )+1);
这段程序应该edit1.text=11
为什么现在还是=10请教.

解决方案 »

  1.   

    adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select max(g_num) as tempnum from guest');
      adoquery1.Open;
      edit1.Text:=inttostr(adoquery1.FieldByName('tempnum').AsInteger +1);
    再试试看吧。
      

  2.   

    adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select max(g_num) as tempnum from guest');
      adoquery1.Open;
    edit1.Text:=inttostr(adoquery1.FieldByName('tempnum').AsInteger +1);
    不行edit1.Text:=inttostr(adoquery1.FieldByName('tempnum').AsInteger);
    做出来结果为9
    但是,这个字段里已经有10了阿。
    g_num为字符型
    请教。
      

  3.   

    字符型的缘故:
    如果:字段中的数为字符型: 1,2,3,4,5,6,7,8,9,10,11,12
    排序为:(从小到大):1,10,11,12,2,3,4,5,6,7,8,9如果:字段中的数为int型: 1,2,3,4,5,6,7,8,9,10,11,12
    排序为:(从小到大):1,2,3,4,5,6,7,8,9,10,11,12
      

  4.   

    但是int型,不能显示001,002这样的数据啊
      

  5.   

    int 型 ,设定字段displayFormat='000'假设你的总位数为3位则1显示为'001',12显示为'012'
      

  6.   

    yesxwl()说的没错,在数据库里1是显示为001了。
    但是在edit.text里一输出,又变成1了。
    我想要的就是简单,实用的在delphi里调用001,002这样的数据。
    求简单的方法,我用access.最好直接调用就是001,002。但要可以自增。
      

  7.   

    这样吧
    adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select max(cast(g_num as integer)) as tempnum from guest');
      adoquery1.Open;
      edit1.Text:=FormatFloat('000',adoQuery1.fieldbyname('tempnum').asinteger);
    在sqlserver中通过,将字符转换成数值后取最大值,再不行我就技穷了
      

  8.   

    对不起  edit1.Text:=FormatFloat('000',adoQuery1.fieldbyname('tempnum').asinteger+1);