小弟现在要实现下面的一个功能;
用FlatEdit1得一个编号 形如:20060911001 然后保存在一个数据表中,
然后在打开的时候FlatEdit1.text的值要变成20060911002,如果明天打开的时候要是20060912001然后又是要20060912002等等...
小弟的代码是:
procedure TNewMeal2F.getMealID();
begin
adoqGetMealID.Close;
adoqGetMealID.SQL.Clear;
adoqGetMealID.SQL.Add('select wMealID  from MealHead  order by wMealID desc');
adoqGetMealID.Open;
adoqGetMealID.Last;
  if adoqGetMealID.RecordCount=0 then
  begin
  FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))+formatfloat('000',1);
  end
  else
  begin

解决方案 »

  1.   

    FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))+formatfloat('000',strtoint(copy(adoqGetMealID.Fields[1].AsString,9,3))+1);
      end;
    end;运行以后提示的错误是: List index out of bounds(1)
    注:FEditDealDate.Text我已经得到了当前的时间2006/9/11
    请各位大哥指点一下.................
      

  2.   

    procedure TNewMeal2F.getMealID();
    begin
    adoqGetMealID.Close;
    adoqGetMealID.SQL.Clear;
    adoqGetMealID.SQL.Add('select wMealID  from MealHead where wMealID like '+''''+formatdatetime('yyyymmdd',Now)+'%''  order by wMealID desc');
    adoqGetMealID.Open;
    if adoqGetMealID.RecordCount=0 then
      FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))  +formatfloat('000',1);
    else 
     FEditMealID.Text:=copy(adoqGetMealID.FieldValues[wMealID],1,8)+
                      inttostr( strtoint( copy(adoqGetMealID.FieldValues[wMealID],7,length (adoqGetMealID.FieldValues[wMealID])-7) )+1))
      

  3.   

    好了,
    我知道錯在哪了
    adoqGetMealID.SQL.Add('select wMealID  from MealHead  order by wMealID desc');改為:
    adoqGetMealID.SQL.Add('select *  from MealHead ');
    就OK了...xzl_kye:
    thank you all the some 
      

  4.   

    adoqGetMealID.Fields[1].AsString,9,3))+1);
      end;
    end;运行以后提示的错误是: List index out of bounds(1)越界了,你select wmeaid,只有一个,应该是adoqGetMealID.Fields[0].