Tum kayitlari silme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tum kayitlari silme
merhaba arkadaslar ms acces veritabanını kullanarak bir program yazdım
tablomdaki tum kayıtları dongu kurmadan silebilirmiyim?
tablomdaki tum kayıtları dongu kurmadan silebilirmiyim?
Kod: Tümünü seç
delete from tablo_adi
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kod: Tümünü seç
with dm.tbladi do
try
DisableControls;
First;
while not eof do
begin
Delete;
Next;
end;
finally
EnableControls;
end;
ÜŞENME,ERTELEME,VAZGEÇME
tablo bir datasource aracılıgı ile dbgrid gibi bilesenlere baglı ise bu kontrollere
kayıtlar arasındaki gecisler iletilmiyor.
eger parca parca siliyor diyorsanız kayıt sayısını bir query ile ogrenip (zira recordcount özelligi de aynı seyi yapabilir) for dongusu ile silebilirsiniz.
kayıtlar arasındaki gecisler iletilmiyor.
eger parca parca siliyor diyorsanız kayıt sayısını bir query ile ogrenip (zira recordcount özelligi de aynı seyi yapabilir) for dongusu ile silebilirsiniz.
ÜŞENME,ERTELEME,VAZGEÇME
for dongusu
begin
dm.TBLHesaplama.first;
for i:=0 to dm.TBLHesaplama.RecordCount-1 do
begin
dm.TBLHesaplama.Delete;
dm.TBLHesaplama.Next;
end;
Showmessage('KAYIT SİLME İŞLEMİNİZ BAŞARIYLA TAMAMLANDI...');
end;
for donfusu kullanarak yaptıgımda tamamını silebiliyorum ama 860 kaydı
yaklasık 50 sn yede siliyor
bildigim kadarıyla for dongusu hız acısından en iyisiydi sizce bu normal mi yada butur silme yada tum kayırları tarama islemlerinde onerebileceginiz baska yontemler var mı?
dm.TBLHesaplama.first;
for i:=0 to dm.TBLHesaplama.RecordCount-1 do
begin
dm.TBLHesaplama.Delete;
dm.TBLHesaplama.Next;
end;
Showmessage('KAYIT SİLME İŞLEMİNİZ BAŞARIYLA TAMAMLANDI...');
end;
for donfusu kullanarak yaptıgımda tamamını silebiliyorum ama 860 kaydı
yaklasık 50 sn yede siliyor
bildigim kadarıyla for dongusu hız acısından en iyisiydi sizce bu normal mi yada butur silme yada tum kayırları tarama islemlerinde onerebileceginiz baska yontemler var mı?
eger sql kullanma sansınız varsa sql ile yapmanızı oneririm.
eger for dongusu ile yapacagım diyorsanız disablecontrols-enablecontrols ozelliklerini kullanın
hızda artıs olacaktır.
Eger Tablonun baglı oldugu datasource un ondatachange olayına bazı kodlar yazmıs iseniz bu da epey yavaslatacaktır.
Ayrıca Calculated alan kullanmıssanız bununda hıza bir etkisi olacaktır, tabiki negatif yonde...
eger for dongusu ile yapacagım diyorsanız disablecontrols-enablecontrols ozelliklerini kullanın
hızda artıs olacaktır.
Eger Tablonun baglı oldugu datasource un ondatachange olayına bazı kodlar yazmıs iseniz bu da epey yavaslatacaktır.
Ayrıca Calculated alan kullanmıssanız bununda hıza bir etkisi olacaktır, tabiki negatif yonde...
ÜŞENME,ERTELEME,VAZGEÇME
bde de emptytable die bi bde komutu var
tabi access de varmı bilemicem bi bakın isterseniz

.-.-.-.-.-.-.-. ^_^
Re: for dongusu
-Burada Next komutunu kullanırsanız tüm verilerinizi silemezsiniz.dtgb yazdı:begin
dm.TBLHesaplama.first;
for i:=0 to dm.TBLHesaplama.RecordCount-1 do
begin
dm.TBLHesaplama.Delete;
dm.TBLHesaplama.Next;
-Zaten kaydı sildikten sonra bir sonraki kayda konumlanıyor ama bir de sonraki kayda kendimiz konumlandırırsak birer atlayarak silecektir.
-Ayrıca for döngüsü yerine @gkimirti hocamında yukarıda söylediği gibi "while not Eof " şeklinde bir döngü daha sağlıklı olacaktır.
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
Re: for dongusu
Bu kodla hepsini silememen normal, muhtemelen yarısını ya da yarısının bir fazlasını siliyorsundur.dtgb yazdı:Kod: Tümünü seç
begin dm.TBLHesaplama.first; for i:=0 to dm.TBLHesaplama.RecordCount-1 do begin dm.TBLHesaplama.Delete; dm.TBLHesaplama.Next; end; Showmessage('KAYIT SİLME İŞLEMİNİZ BAŞARIYLA TAMAMLANDI...'); end;
bu satır fazla gibi geldi bana
Kod: Tümünü seç
dm.TBLHesaplama.Next;
Kod: Tümünü seç
begin
dm.TBLHesaplama.first;
for i:=0 to dm.TBLHesaplama.RecordCount-1 do
dm.TBLHesaplama.Delete;
Showmessage('KAYIT SİLME İŞLEMİNİZ BAŞARIYLA TAMAMLANDI...');
end;
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned

Ez cüdâyîhâ şikâyet mîküned

arkadaslar sanırım en ideali
begin
with dm.TBLHesaplama do
try
DisableControls;
First;
while not eof do
begin
Delete;
end;
finally
EnableControls;
end;
yada
begin
dm.TBLHesaplama.DisableControls;
for i := 0 to dm.TBLHesaplama.RecordCount-1 do
dm.TBLHesaplama.Delete;
dm.TBLHesaplama.EnableControls;
end;
denemelerimde en hızlıları bunlar oldu
kolay gelsin
begin
with dm.TBLHesaplama do
try
DisableControls;
First;
while not eof do
begin
Delete;
end;
finally
EnableControls;
end;
yada
begin
dm.TBLHesaplama.DisableControls;
for i := 0 to dm.TBLHesaplama.RecordCount-1 do
dm.TBLHesaplama.Delete;
dm.TBLHesaplama.EnableControls;
end;
denemelerimde en hızlıları bunlar oldu
kolay gelsin