我要实现一个自己编号的程序,先要查出表中的最大值,然后再累加,代码如下 a:='NO'+formatdatetime('yyyymmdd',now());
  with adoquery3 do
  begin
  close;
  sql.Clear;
  sql.Add('select max(加工单编号) from jiagong ');
  open;
  end;
  if adoquery3.FieldByName('加工单编号').Value=null then
  a:=a+'001'
  else begin
  b:=trim(adoquery3.FieldValues['加工单编号']);
  i:=strtoint(trim(copy(b,11,5)));
  if i<10  then
  a:=a+'00'+inttostr(i+1)
  else if i<100 then
  a:=a+'0'+inttostr(i+1)
  else
  a:=a+inttostr(i+1);
  end;
  label5.Caption:=a;
程序运行时,总是提示出错,adoquery1找不到字段‘加工单编号’,代码好像没有错,哪位高手能告诉我,问题出在哪里?分不够可以再加!

解决方案 »

  1.   

    sql.Add('select max(加工单编号) from jiagong ');
     你这样选出来,当然找不到字段'加工单编号'啦这样试试 
     sql.Add('select max(加工单编号) as '加工单编号' from jiagong ');还有
    if adoquery3.FieldByName('加工单编号').Value=null then=null   不知有没有问题
      

  2.   

    'select max(加工单编号)加工单编号 from jiagong '
      

  3.   

    你可以查一下sql的帮助,看max支持什么类型的字段,再看你的字段的类型
      

  4.   

    呵呵后 
    都是=''
    没见过null的 
    高级打字员都说出来了
      

  5.   

    1.SQK语句:select max(加工单编号) as '加工单编号' from jiagong2.if adoquery3.Fieldvalues['加工单编号'] = null then
      

  6.   

    if adoquery3.Fieldbyname('asdf').isnull then
      

  7.   

    最好把adoquery3.FieldByName('加工单编号').Value=null 改成
    adoQuery3.eof;
      

  8.   

    1、sql.Add('select max(加工单编号) 加工单编号 from jiagong ');2、if adoquery3.FieldByName('加工单编号').isnull then
      

  9.   

    sql.Clear;
      sql.Add('select max(加工单编号) from jiagong ');
      open;
      end;
      if adoquery3.FieldByName('加工单编号').Value=null then
      a:=a+'001'
      else begin
      b:=trim(adoquery3.FieldValues['加工单编号']);上面,b后面的表达式有问题,因为你的sql语句执行后,返回的值不再是你所想象的"加工单编号",所以b的后面的表达式应该为:trim(adoquery3.fileds[0].asstring);即可
      

  10.   

    a:='NO'+formatdatetime('yyyymmdd',now());
      with adoquery3 do
      begin
      close;
      sql.Clear;
      sql.Add('select max(加工单编号) from jiagong ');
      open;
      end;
      if adoquery3.FieldByName('加工单编号').Value=null then   
    //这句不对,可更改为if adoquery3.Fields[0].asstring='' then
      a:=a+'001'
      else begin
      b:=trim(adoquery3.FieldValues['加工单编号']);
    //这句不对,可更改为b:=trim(adoquery3.fields[0].asstring);
      i:=strtoint(trim(copy(b,11,5)));
      if i<10  then
      a:=a+'00'+inttostr(i+1)
      else if i<100 then
      a:=a+'0'+inttostr(i+1)
      else
      a:=a+inttostr(i+1);
      end;
      label5.Caption:=a;
    ********************************************************************************
    这样修改了之后,绝对没有问题。
      

  11.   

    elect max(加工单编号) as '加工单编号' from jiagong
    if adoquery3.FieldByName('加工单编号').Value=null then
    改成
    if adoquery3.FieldByName('加工单编号').Value='' then
    或者
    if adoquery3.FieldByName('加工单编号').Value is null then
      

  12.   

    呵呵。。
    elect max(加工单编号) as '加工单编号' from jiagong
    应该是
    Select max(加工单编号) as '加工单编号' from jiagong
      

  13.   

    判断空是用is的,不能=null 的
    再说,你的max用法也不对。怎么可能实现啊