كد فوق نيز دو مشكل دارد اول اينكه پس از اجرا اشاره گر ركورد به آخرين ركورد رفته و بنابراين محل قبلي در جدول گم مي شود و دوم اينكه كنترل هاي ويژوالي كه به بانك اطلاعاتي متصل هستند به تعداد ركوردها مرتب به روز رساني مي شود و بخصوص هنگامي كه تعداد ركوردهاي جدول زيادتر ميشوند بسيار به چشم مي آيد بنابراين
var
SavePlace: TBookMarkStr;
.
.
.
Listbox1.Clear;
with Table1 do
begin
try
SavePlace:=BookMark;
try
DisableControls;
First;
while not Eof do
begin
Listbox1.Items.Add(table1['fieldname']);
Next;
end;
finally
EnableControls;
end;
finally
BookMark:=SavePlace;
end;
end;
كه در كد فوق بوسيله
BookMark
محل ركورد فعلي را ذخيره ميكند و
DisableControls و EnableControls
اتصال به بانك را براي كنترلهاي ويژوال وابسته قطع و فعال ميكند