tüm kayıtları çekip excele aktarma ve yazdırma işlemi pek kullanılmasada aklıma takıldığı ve sebebini araştırma isteği olduğundan bu soruyu sormak istedim.
firebird ile hazırlanmış tablomda bulunan verileri sorgulama sayfamda ibquery ile sorgulayarak çekiyorum ve button vasıtası ile excele aktarıyorum. belirli aralıkta veri çekip aktardığımda pek sorun yaşamıyorum ama tüm kayıtları çekip excele aktarmak istediğimde bariz bir yavaşlama oluyor. bazen duracak seviyeye geliyor. kayıtlarımın şu anki sayısı 3000 ne yaklaştı. kayıt sayısı da az 10 binler 100 binler veya milyonlar değil. Excele aktarımda kullandığım kod şöyle;
Kod: Tümünü seç
procedure TFormRaporSrg.RprSrg_BtnExYazClick(Sender: TObject);
var
excel, sayfa: Variant ;
d:integer;
r:variant;
begin
Screen.Cursor := crHourGlass;
excel:=createoleobject('excel.application');
excel.workbooks.add;
sayfa:=excel.workbooks[1].worksheets[1];
r:=excel.activeworkbook.worksheets[1].cells[1];
d:=0;
r.cells[1,1]:='RAPOR NO';
r.cells[1,2]:='İNCELEME TARİHİ';
r.cells[1,3]:='MÜŞ.ADI SOYADI';
r.cells[1,4]:='İZ DURUMU';
r.cells[1,5]:='TESPİT DURUMU';
raporsrgibquery.Open;
raporsrgibquery.First;
while Not raporsrgibquery.eof Do
begin
d:=d+1;
r.cells[1+d,1]:=raporsrgibquery.FieldByName('RAPOR_NO').asstring;
r.cells[1+d,2]:=raporsrgibquery.FieldByName('INCTARIHI').asdatetime;
r.cells[1+d,3]:=raporsrgibquery.FieldByName('MUSTEKI').AsString;
r.cells[1+d,4]:=raporsrgibquery.FieldByName('IZ_DURUMU').AsString;
r.cells[1+d,5]:=raporsrgibquery.FieldByName('TESPIT_DURUMU').AsString;
raporsrgibquery.Next;
jvspecialprogress1.Maximum:=raporsrgibquery.RecordCount;
jvspecialprogress1.Position:=raporsrgibquery.recno;
jvspecialprogress1.TextOption:=topercent;
jvprogressdialog1.Max:=raporsrgibquery.RecordCount;
jvprogressdialog1.Position:=raporsrgibquery.recno;
jvprogressdialog1.Text:=raporsrgibquery.FieldByName('RAPOR_NO').asstring;
jvprogressdialog1.Show;
end;
excel.Columns.AutoFit; // burası colonlari ayarlar
Screen.Cursor := crDefault;
excel.visible:=true;
excel:=unassigned;
end;
sorgularımı ibquery kullanarak ve tarihler arası kriter parametreleri girerek oluşturuyorum.
bu kodlamada bir hatam varmı acaba? yoksa başka bir yerde mi hata yapıyorum.
teşekkür ve saygılarımla