Hangisi daha iyi?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Misafir

Hangisi daha iyi?

Mesaj gönderen Misafir »

{
procedure TForm4.Edit1Change(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select *from vadelert');
Query1.SQL.Add('where '+arama+' like "' + edit1.Text + '%" ');
Query1.Open;
end;
}

Yukarıdaki kodda vadelert bir tablo, arama string tipinde tablodaki bir alanın ismi ben bu
kodu edit1 in chance 'ine koyduğum için her tuşa basıldığında arama yaparak soruçları getiriyor.
Ama bazı arkadaşlarım aranacak tüm stringi alıp enter tuşuna basılnca arama yapıyor. Benim
yaptığımda her harften sonra yapıldığından kişi örneğin birinin soyadını tam hatırlamıyorsa
yada yarısını bile hatırlasa sonuca ulaşıyor. ve zaman kaybı olmuyor. Görsel olarak ta fena
değil ancak her gülün bir dikeni vardır ya, ben burda dikeni göremiyorum ama içimden bir his
bir diken var diyor. Benim yazdığım kodun dezavantajlarını bana kısaca anlatabilirseniz
teşekkür ederim. İyi çalışmalar. Hayırlı Cumalar. :)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bence de Enter'a basınca araması daha iyi.

Sizinkinin dikeni her tuşa basılınca çalışması. Yani ben Mustafa ismini arayacaksam tam 7 sefer çalışıyor. Bu büyük tablolarda çok yavaşlamaya neden olur. Diğer türlü Mustafa yazıp Enter'a bastığım zaman hem kod bir kere çalışacak, hem de daha az kayıt döndüğü için çok daha hızlı olacak.

Ben arayacağım kişinin isminin M ile başladığını biliyor, diğer kısmını bilmiyorsam, M yazıp Enter'a basarım. M ile başlayanlar gelir. Yani bu yapıda da istediğiniz faydayı sağlarsınız.

Ne kadar az kayıt o kadar iyi. Hatta bu tip durumlarda kullanıcılara diretmelisiniz. En az bir harf yazsın, öyle kayıt döndürün.

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

Mesaj gönderen naile »

Evet Musatafa Hocama katılıyorum. Çok kayıt içeren tablolarda sorun oluyor, çok yavaşlatabiliyor. Ben de onchange de kullanıyordum ama enter daha iyi olur diye düşünüyorum artık.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Neden locate kullanmıyorsunuz? sonuçta tablo içinde o field üzerinde bulduracaksınız.
Gerçi bu perormans kaybına sebep olur. Yani OnChange her basılan tuşta tetiklenecek.
Şunu deneyebilirsin. Bir Timerla yazım işlemi yapıldığı sürece Query yi tetikletmezsin. ozaman performans sağlanır.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
mehmet_turecan_cakmak
Üye
Mesajlar: 132
Kayıt: 02 Tem 2003 01:08
Konum: Afyon
İletişim:

arama

Mesaj gönderen mehmet_turecan_cakmak »

bede mustafa haamın dediğine katılıyorum neden deresin locate ile kayıt bulmak daha hızlısıt tabi kayıtlı kişinin bilgilerini tam biliyorsanız ama sql d öyle bir sorun yok dediğiniz gibi kayıtlı kişinin adını yarım hatırlıyorsanız bile bulursunuz ama dezavantajı aramayı yavaşlatıyor bilmem ama be tabi enter tuşunu kullanmıyorum o ayrı bişey :lol:

iyi çalışmalar...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Locate kullanarak kişinin bilgilerini tam bilmesine bence gerek yoktur.

Örnek birkod veriyorum.

Query1.Locate('code',Edit1.Text,[loPartialKey]);
Misafir

Teşekkür ederim

Mesaj gönderen Misafir »

Sorgum için yaptığınız değerli yorumlarınızdan dolayı çok teşekkür ederim
çok sağolun
Cevapla