写了以下代码,目的是在增加的记录前多一个序号,
1,在adoMain中加入一个calculate的字段'RecordNO'
2,在'RecordNO'的onGetText事件中写如下代码
     Text := IntToStr(adoMain.RecNO);
     if Text = '-1' then Text := '';
3,增加记录的代码
    with adoMain do
    begin
      Append;
      赋值语句,,,
    end;
   在此出现一个问题,如果最后不加入POST,则RecordNO字段显示的都是-1,加入post才正常显示,请问为什么会这样?onGetText事件发生时,ado控件到底处于一个什么样的状态呢?

解决方案 »

  1.   

     if adoMain.State in [dsInsert] then
        Text:=inttostr(adoMain.RecordCount+1)
    else
        text:=inttostr(adoMain.RecNo);
      

  2.   

    不行的,这样的话,RecordNO字段中每条记录的值都是一样的,
      

  3.   


     onGetText这个不管你数据集处于什么状态,只要是这个字段获得数据时就会触发 这样写:
      Text:=Sender.AsString;   //保证正常显示未修改前的值
      if IntToStr(adoMain.RecNO)=-1 then   //条件成立则改变值
        Text:='';