var  ADOSetTmp: TADODataSet;
     i,j:int64;
begin
ADOQuery1.DisableControls;
    ADOSetTmp := nil;
    ADOSetTmp := TADODataSet.Create(ADOSetTmp);
    ADOSetTmp.CommandText := 'select max(xh) as num from TBA_PZ where mc='''+zw_para0+''' and xh<'+inttostr(ADOQuery1.FieldByName('xh').AsInteger);
    ADOSetTmp.Connection := data1.ADOConnection1;
    ADOSetTmp.Open;
    if  ADOSetTmp.FieldByName('num').Value<>null then
    begin
        j:=ADOQuery1.FieldByName('xh').Value;
        i:= ADOSetTmp.FieldByName('num').Value;
            ADOQuery1.edit;
            ADOQuery1.FieldByName('xh').Value:=i;
            ADOQuery1.Prior;
            ADOQuery1.edit;
            ADOQuery1.FieldByName('xh').Value:=j;
    end;
    ADOQuery1.EnableControls;
    ADOSetTmp.Free;
    aDOQuery1.UpdateBatch;
    ADOQuery1.Close;
    ADOQuery1.open;
实现了将指定行上移,但上移后记录指针又跳到数据的第一行,如果指定行要连续的上移,这样每次都要重选非常麻烦,用什么方法可以实现数据指针上移后又跟踪到原上移行