代码是这样的:
ADOQuery1.Close; 
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add('Select max(corp_no) from zfb_unit_no');
ADOQuery1.open;
if ADOQuery1.recordcount>0 then
edit2.text := ADOQuery1.fieldbyname('corp_no').value ;
if ADOQuery1.recordcount<=0 then
edit2.text :='0001' ;
错误是:field'corp_no'not found

解决方案 »

  1.   

    就是表里没有这个字段啊ADOQuery1.SQL.Add('Select max(corp_no)as corp_no  from zfb_unit_no');
      

  2.   

    加个别名或者用
    if ADOQuery1.recordcount>0 then
    edit2.text := ADOQuery1.fields[ 0].value ;
      

  3.   

    朋友你何不试试我的方法。ADOQuery1.Close; 
    ADOQuery1.SQL.Clear ;
    ADOQuery1.SQL.Add('Select max([corp_no]) from zfb_unit_no');//把字段加一个方框括起来
    ADOQuery1.open;
    if adoquery1.Recordcount>0 then
       edit2.text:=adoquery1.fields[0].asstring//你在这里错了因为是一个表达式其字段名不是corp_no了而叫expr1  因此只能用fields[0]调出
    else
       edit2.text:='0001';一定能解决你的问题。
    下次调sql语句可以在delphi自带的sql explorer中试运行一遍就明白了。
      

  4.   

    ADOQuery1.SQL.Add('Select max(corp_no) as Myfieldname from zfb_unit_no');adoquery1.fieldbyname('Myfieldname')...
      

  5.   

    我觉得如果有可能还是不要用field[integer]的方式比较好,那样不好升级数据库吧?
      

  6.   

    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear ;
    ADOQuery1.SQL.Add('Select max(corp_no) as YouFieldName from zfb_unit_no');
    ADOQuery1.open;
    if ADOQuery1.recordcount>0 then
            edit2.text := ADOQuery1.FieldValue('YouFieldName')
    else
            edit2.text :='0001' ;
      

  7.   

    'Select max(corp_no) from zfb_unit_no'
    上面有问题可以改写成:
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear ;
    ADOQuery1.SQL.Add('Select max(corp_no) as corp_no from zfb_unit_no');
    ADOQuery1.open;
    if ADOQuery1.recordcount>0 then
    edit2.text := ADOQuery1.fieldbyname('corp_no').value ;
    if ADOQuery1.recordcount<=0 then
    edit2.text :='0001' ;
    或改成:
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear ;
    ADOQuery1.SQL.Add('Select max(corp_no) ,corp_no from zfb_unit_no');
    ADOQuery1.open;
    if ADOQuery1.recordcount>0 then
    edit2.text := ADOQuery1.fieldbyname('corp_no').value ;
    if ADOQuery1.recordcount<=0 then
    edit2.text :='0001' ;
      

  8.   

    应该是这样
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear ;
    ADOQuery1.SQL.Add('Select max(corp_no) as corp_no from zfb_unit_no');
    ADOQuery1.open;
    if ADOQuery1.recordcount>0 then
    edit2.text := ADOQuery1.fieldbyname('corp_no').value.asstring ;
    if ADOQuery1.recordcount<=0 then
    edit2.text :='0001' ;如果直接使用Select max(corp_no) from zfb_unit_no的话,结果集是无列名的!!
    请注意程序的大小写,呵呵:-)