with CurrentQuery do
  begin
    if Active then
      Close;
    SQL.Clear ;
    SQL.Add(sSQL);
    if IsQuery then
    begin
      Open;
      First;
      Last;
      First;
      if Recordcount=0 then
      begin
        result := DM_TABLEEMPTY;
        exit;
      end;
    end
    else
      ExecSQL;
  end;在这部分代码里,First;
                Last;
                First;
是什么意思啊?看的不是很懂,现在在学delphi和数据库方面的。帮忙看看

解决方案 »

  1.   

    建议找本基础的书看一下
    First; last  ; first是为了触发CurrentQuery 的beforeScroll, AfterScoll事件
      

  2.   

    First;
          Last;
          First;
          if Recordcount=0 then
    我想他的First_Last_First的目的是为了得到正确的RecordCount的值。在部分数据库中,直接调用RecordCount的值,返回为-1,即未知的值,而不是正确的结果。而调用First_Last_First后,RecordCount的值变成真正的数值。
    这一点从后面获取RecordCount可以看出。
    因此“是为了触发CurrentQuery 的beforeScroll, AfterScoll”的说法不可信。
    从程序可以看出该代码是一个公用函数/过程,而对任何Query都触发这些事件意义不大,而且有时会出错(Query作为参数传近来时);没有意义(Query使用某一个固定的Query)。