çalışan programla ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

çalışan programla ilgili

Mesaj gönderen naile »

Bugün saatlerdir çalışan bir programım var (delphide yazdığım).
Program saatlerdir çalışıyor (çok yoğun bir işi var,çok büyük toblolardan select yapıp başka bir tabloya insert yapıyor) ve ben forma hiç müdahale edemiyorum,minimize edemiyorum,formun asıl halini göremiyorum bile. Farklı bir pencere açıp onu minimize ettiğimde formun olduğu alanda minimize ettiğim pencerenin oraya denk gelen kısmı görünüyor. Bu delphiden mi kaynaklanıyor neden böyle oluyor? Program çalışmaya devam ediyor. Kayıt sayısından takip ediyorum. Delphi 6, mssql server kullanıyorum. Database kendi makinamda değil server üzerinde. bde kullanıyorum. Tanlolar gerçekten çok büyük (insert yaptığı tabloya yaptığı kayıt sayısı şuanda 909.621, tahminen 1.320.000 civarında olacak)
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Eger toplu insert islemi yapan bir sql statement calistirmayip kayit kayit okuyup insert eden bir delphi kodunuz varsa.

Dongi icinde bir yerlere formunuzu refresh edecek Form1.Refresh yazmaniz zannediyorum formun gorunebilmesini saglayacaktir.

Kolay gelsin....
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7588
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

be tip drumlarda gerekli komut Update. Form1.Update komutunu verdiğiniz anda, form yeniden boyanır ve gözükür.

Ben bu tip durumlarda takip için bir değişken tanımlayıp, onu ekrana yazdırıyorum. şuna benzer birşey :

Kod: Tümünü seç

var
 i : integer;
begin
  i := 0;
  {insert işlemleri}
  Inc(i);
  Label1.Caption := IntToStr(i);
  Form1.Update;
 ...
end;
Programın minimize veya butona bastığınızda yanıt almak istiyorsanız; Application.ProcessMessage komutunu yazmalısınız.

Kolay gelsin.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Evet tek tek select yapıp insert yapıyorum. Deneyeceğim, teşekkürler..
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

pardon, gitmedi zannedip iki sefer göndermişim.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Merhaba,
her iki yarışmacı arkadaşımın da (pardon programcı :wink: ) verdiği bilgilere diyecek bir sözüm yok. :? Fakat bu şekilde yapınca işlemde bir yavaşlamayı da göze almak gerekiyor. Bence olayı hızlandırmak daha akıllıca olacaktır. select le insert i aynı query de kullanmak hızı arttırır. Eğer arada bir işlem yapman gerekiyorsa bunun için de stored procedure kullanabilirsin. Ayrıca select yaptığın query nin dbgrid, dbedit, dblookupcombo vs. bileşenlerdeki bağlantıları kapatmalısın! query bağladığın dataset leri o an için DataSource.DataSet := nil; ile ayırabilirsin. Ayrıca bu işleri query ile yaparken BDEADMIN den işlem yaptığın alias ın SQLQRYMODE SERVER seçersen işlemler server üzerinde daha hızlı olabilir.
Hızlanınca da ekranın donmasını (grafik tazelememesini) çözmüş olursun.

Kolay gelsin.
Kullanıcı avatarı
birisi
Üye
Mesajlar: 17
Kayıt: 12 Haz 2003 08:46
Konum: istanbul
İletişim:

Mesaj gönderen birisi »

şöyle bişi yapsak sorunu çözemezmiyiz
uygun gördüğün muthelif yerlere(uzun süreceğini düşündüğün döngülerin içine) mesala her kayıt insert ettiğinde

application.ProcessMessages

yazıp programın diğer işlerini yapması için fırsat versek olmazmı? aynı şekilde çalışan benimde bir programım var ve 365 gün 6 saat sürekli çalışacak (5 saniyede bir) bir tabloya bakıyor ve kendisine ait olan kayıtları kendi localine çekiyor. bu şekilde bir tıkanma yaşadığı için böyle bir çözüm bulmuştum.
Kullanıcı avatarı
birisi
Üye
Mesajlar: 17
Kayıt: 12 Haz 2003 08:46
Konum: istanbul
İletişim:

Mesaj gönderen birisi »

select ile insert ifadelirini aynı queryide kullanmaktan kasıt

insert into table1 values(select * from table2 where .......)

mi?
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Yaptığım işlem için select ve insert i ayrı query de yapmam gerekiyor. Ama
application.ProcessMessages i deneyeceğim.
Cevaplayan arkadaşlara teşekkürler.
Cevapla