Merhaba. 1, yıldır delphi ile uğraşıyorum (kendimi geliştirmek için) sitenizden çok şey öğrendim, emeği geçen herkezden Allah razı olsun. Bu ilk sorum olacak.
Personel programı yapmaya çalışıyorum. Bitmek üzere iken bir sorunla karşılaştım. Sorunum Arama yaparken çok yavaş arama yapması.
Tasarımım şu şekilde. Delphi 7 kullanıyorum.
Veri Tabanım Advantage, ilişkileri de veritabanı üzerinden kurdum.Querylerin master source ve master field lerini de ayarladım. İndexleri de ayarlı (P_sicil,Ad,Syd).Personel Tabloma Bağlı 8 tablom var. Ayrıca Bürosunu, Rütbesi,Öğrenim durumu vs. gibi bilgilerini başka tablolarda tutup Personel Tabloma bunların kodlarını yazdırıyorum.
Personel Kayıt ve Bilgileri Ekranında personel aramasını jvdbsearchedit ler ile yapıyorum. Sorunumda burada başlıyor. Arama işlemim çok yavaş oluyor. Ayrıca ilk kayıttan son kayıda 3 sn de gidiyor. Tablomdaki kayıt sayısı 1150.Bu kayıtları excelden aktardım.
Sorunu Çözebilmek için yaptıklarım.
1-Yeni bir Proje başlatıp orda jvdbsearchedit le tekrar denedim hızlı çalıştı.(Sorun Jedide Değil ayrıca sorgulama ekranımda da jedi ile arıyorum hızı iyi)
2-Querypersonel Hariç Tüm Queryleri kapattım denedim yine değişmedi.
3-Bitane edit koydum onchangesinde arama yaptırayım dedim Cannot perform this operation on a closed dataset' hatasını verdi.(Hatayı oflinedan aradım ama yazılanları okudum çözüme ulaşamadım)Bu hatayı vermeseydi de onchange ile arasaydım hızlanırmıydı?
Nerde hata yaptığımı bulamadım Tavsiyeleriniz nelerdir? Yardımlarınız için şimdiden teşekkür ederim.
Aramada hız problemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Aramada hız problemi
Buğdayı olmaksızın değirmene gidenin ancak saçı sakalı ağarır...
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
daha önce kllinik yazılımı geliştirdim advantage ile yaklaşık 10,000 hastada aramayı çok iyi olmaz isede normal bir hızda yapıyordu. 1150 kayıt için query veya table kullanman çokda birşey değiştirmez bence. tabloların indexlerini bir kontrol et istersen. ve advantagenin veri tabanı yöneticisi ve delphi componentlerini kullan her ne kadar mimari bir yapıya sahip denilsede paradox gelişmişi o kadar . istersen sana forum üzerinden bu nesneleri gönderebilirim.(not bunlar ücretsizdir.adminler kızmasın) en son advantage sysbase satılmıştı şu anda durumu nedir bilmiyorum.
Arkadaşlar advantage localde program yapılacaksa en mantıklı çözümdür.Ayrıca oldukça hızlıdır.Ben 30.000 kayıt arsında arama yaptım tabiri caiz ise cart diye buluyor...Elbette kayıt sayısı arttıkça yavaşlama olur ama 1000 kayıt için hiç bir veritabanı sorun çıkarmaz...Advantage da table kullan demiş arkadaş niye öyle demiş bilmiyorum ama bunların yerleri farklı...Advantage da bir kaç sıkıntı var özellikle query lerde kayıt mevzusunda "Cannot perform this operation on a closed dataset" bu hatayı verir niye mi? Query ile yaptığın her hangi bir sorgu sonucunda değer dönmez ise Advantage query si akabinde gelen edit, insert gibi komutlarda bu hatayı verir yani kendini readonly yapıyor diyeyim...Bu sorunu ben nasıl çözüyorum yazayım lazım olur belki sana
Bu yüzden kayıt işlerinde table liste ve sorgularda Query kullanımı tavsiye edilir advantage için...
Birde yavaşlığa neden olan bir sorun var senin sorununda onda olabilir muhtemelen "Autoinc alanlar" advantage ta örneğin 30000 kayıtlık bir vt ni z olsun eğer autoinc vir alan tanımlıysa işte o zaman yavaşlamadan söz edilebilir.
Ayrıca tablo içeriğini silsen bile yani tabloyu boşalttsanda o tablonun boyutu değişmiyor 10 mb sa öyle kalıyor...Bu bir sorun işte bir keresinde döngü ile 100.000 kayıt girmiştim tablo boyutu tam 76 mb oldu...
Advantage veri erişim ve kayıt işlerinde kesinlikle hızlıdır hatta testlerime göre mssql den hızlı localde...Advantega bu dezavantajlarını giderse tam süper olacak...umarım açıklayıcı olmuştur...
Kod: Tümünü seç
if AdsQuery.canmodify=false then // düzenlenebilir modda değil ise
begin
Quey.sql.clear;
query.sql.add('select*from tablo');
query.open;
end;
AdsQuey.insert;// veya edit;
Birde yavaşlığa neden olan bir sorun var senin sorununda onda olabilir muhtemelen "Autoinc alanlar" advantage ta örneğin 30000 kayıtlık bir vt ni z olsun eğer autoinc vir alan tanımlıysa işte o zaman yavaşlamadan söz edilebilir.
Ayrıca tablo içeriğini silsen bile yani tabloyu boşalttsanda o tablonun boyutu değişmiyor 10 mb sa öyle kalıyor...Bu bir sorun işte bir keresinde döngü ile 100.000 kayıt girmiştim tablo boyutu tam 76 mb oldu...
Advantage veri erişim ve kayıt işlerinde kesinlikle hızlıdır hatta testlerime göre mssql den hızlı localde...Advantega bu dezavantajlarını giderse tam süper olacak...umarım açıklayıcı olmuştur...
kayıt sayısı artınca göreceğiz cxgrid ne kadar iyi. tamam çözüm çözümdür ama cxgridden bir sürü şikayet oldu burada. o bakımdan önce mimariyi ve dosya yapısını ele almakta fayda varmgulbeyaz yazdı:Cevaplarınız için teşekkür ederim.
Arama işlemini cxgrid üzerinden yaparak hallettim, hızı iyi.
Ama problem sonuçta devam ediyor. Yapıyı tekrar gözden geçireceğim. Sorunu çözebilirsem yazarım. Herkeze kolay gelsin.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog