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