Editlere Girilen bilgiyi database listelemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
MiskinComez
Üye
Mesajlar: 19
Kayıt: 29 Nis 2014 04:40

Editlere Girilen bilgiyi database listelemek

Mesaj gönderen MiskinComez »

Merhabalar
Sorunumu forumlarda araştırmama rağmen, çözüm bulamadım. Yardımcı olmanızı rica ediyorum.
Delphi 7 kullanıyorum kayıt yapmadan once database içiersinde veri aratmak varsa listelenmesini istiyorum.
database de adı soyadı mesleği vs....

dbgridte ekranda görürken
Adı, soyadı , mesleği olmak üzere form 3 edit ekliyorum ve editchange özeliğine

örnek

procedure TForm1.Edit1Change(Sender: TObject);
begin
With Edit1 do
if Text <> '' then
Table1.FindNearest([Text]);
end;

ekliyorum.
arama yaparken listeleme yapıyor ama istediğim gibi değil

ben aynı anda adının bir kaç karekterini yazarken soyadının da bir iki karekterini yazmısken listeleme de en yakın sonuca gelmesini istiyorum. veya adı ve mesleğininden bir harf yazdımsa listeliyecek bir program varmı
yardımlarınız için şimdiden tesekkürler
ercanskose
Üye
Mesajlar: 62
Kayıt: 18 Eyl 2011 02:31

Re: Editlere Girilen bilgiyi database listelemek

Mesaj gönderen ercanskose »

sen edite girilen bilgiyi gridde listelemek istiyorsun sanırım.
onun için editin onkeypress olayına sorgunu yazarsan her bastığın harfte uygun kayıtları listeler.
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Re: Editlere Girilen bilgiyi database listelemek

Mesaj gönderen Commandx »

Query ile filtrelemek istiyorsan (editin on key press eventine yazılacak veya bir butonun on click da yazabilirsin)

Kod: Tümünü seç


    ADOQuery1.Close;
    ADOQuery1.Sql.Clear;
      ADOQuery1.Sql.Add('Select * From TABLO1 Where ADI_SOYADI like "%'+Edit1.text+'%"');
    ADOQuery1.Open;

end;  
Tablo ile filtrelemek istiyorsan ki "Önerilmez" Küçük tablolarda kullanabilirsin, fakat kayıt şiştikçe yavaşlayacaktır, yukardaki daha makul aynı işi görür

Kod: Tümünü seç

IBTable1.Filtered:=false;
IBtable1.Filter:='ADI_SOYADI like '+QuotedStr('%'+Edit1.Text+'%' );
IBTable1.Filtered:=true;
IBTable1.open;
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
MiskinComez
Üye
Mesajlar: 19
Kayıt: 29 Nis 2014 04:40

Re: Editlere Girilen bilgiyi database listelemek

Mesaj gönderen MiskinComez »

Diğer mesajda belirttim
" yardımlarınız için tesekkür ederim.
yapmak istediğim
örnek olarak söyle birsey
table1 de adı soyadı meseleği var diyelim
kayıt girişi yaparken aynı zamanda girilen kayıt varmı yokmu diye o esnada kontrol etsinki yeniden giriş süresini azaltayım.
aramak istediğim kişiyi hızlı listeleme istiyorum binlerce kayıt içersinde

edit1 table1 de adı na bağlı olsun A harfine basınca A ile baslayan tüm kayıtları dbgritte veya listelemede ekranın bir yerinde göstersin edit2 de table1 soyadına bağlı olsun Edit 2 ye girilen harfte B olsun soyadının ilk karekterini girince Adı A ile ve soyadı B ile başlayanları listelesin sadece
tabi edit3 ilede meseleğinin işlemini yaptık diyelim.
yani editlere girilen harf kadar database de arama yaparak filitreleme yapıp listelesin uygun olan ismi tıkladığımızda bilgilerini getirsin. yoksa yeni kayıt için devam etsin. "


database for windows kullanıyorum Sql suan ekli değil programda

Saygılar iyi çalışmalar
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Editlere Girilen bilgiyi database listelemek

Mesaj gönderen tayipk »

bu demiş olduğun olayı 3 editinde onkeypress olayında çok rahat sorgulayabilirsin.sonuçta edit1 = adı edit2=soyadı ve edit3=mesleği için sonuç şu olmalı Edit1 e yazdıkça yaptığın sorgulama ile edit1 texte eşit bilgiler sorgulanacak ve queryin açılacak sonra edit2 ye veri girerken küçük bir ekleme yapacaksın oda şu like %edit1.text% and %edit2.text% şeklinde 3. editte de like % edit1.text% and %edit2.text% and %edit3.text% şeklinde gidebilirsin ama burda önemli olan şu veri giriş sıralaması edit1->edit2->edit3 şeklinde olmalıki doğru sonuçlar dönsün
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Editlere Girilen bilgiyi database listelemek

Mesaj gönderen mrmarman »

tayipk yazdı:bu demiş olduğun olayı 3 editinde onkeypress olayında çok rahat sorgulayabilirsin.sonuçta edit1 = adı edit2=soyadı ve edit3=mesleği için sonuç şu olmalı Edit1 e yazdıkça yaptığın sorgulama ile edit1 texte eşit bilgiler sorgulanacak ve queryin açılacak sonra edit2 ye veri girerken küçük bir ekleme yapacaksın oda şu like %edit1.text% and %edit2.text% şeklinde 3. editte de like % edit1.text% and %edit2.text% and %edit3.text% şeklinde gidebilirsin ama burda önemli olan şu veri giriş sıralaması edit1->edit2->edit3 şeklinde olmalıki doğru sonuçlar dönsün
Merhaba.

- Bir kaç hatırlatma yapayım :
(1) AND / OR ile yaptığınız veri sorgulamasında, sadece (index yapına bağlı olarak) sorgu dönüş hızı etkilenir. Sonuçların miktarını etkilemez. Anlatılmak istenen: adını girmeden soyadı sorgulanmasın, adı ve soyadını girmeden mesleği sorgulanmasın şeklinde ise zaten bu ya SQL içinde değil de dışarıdan IF ile yapılır ya da SQL içinde yapılmak istenirse de veritabanı türüne göre CASE gibi dallanmalar ile yapılır.

(2) Sonuçların etkilenmesi için JOIN kullanımı sırasında en alt satırda AND / OR kullanmak ile JOIN satırındaki parantez içinde verilmesi arasında böyle "Sonuçlar farklılaşabilir" şeklinde bir korelasyon kurulabilir.

(3) LIKE ile sorgulanırken ".... ile başlayan" olacak ise %EDIT% şeklinde her iki tarafta değil, sadece son tarafta olacak şekilde EDIT% şeklinde (%) ifadesi konmalıdır. Yoksa 'A' girişi yapsanız, içinde 5 nolu harfi A olan bile size sonuç olarak geri dönecektir.

- Çözümlerin kod karşılığı aşağıdaki şekilde olabilir. Edit1 Adı, Edit2 Soyadi, Edit3 Mesleği olduğu düşünüldüğünde,

(a) Her üçü de boş ise tablo açılır ama değer dönmez ( WHERE 1=0 geçerlidir )

(b) Bu üç editten hangisine en az 1 karakter giriş yapılırsa o edit OR ifadesi ile bu sorguya dahil edilir ve 1=0 yani FALSE durumunu bozacak bir şart oluşturarak sadece ilgili değerler ile BAŞLAYAN sonuçlar döner.

(c) TRIM fonksiyonu burada anahtar fonksiyondur, çünkü veri girişi yapan kullanıcı boşluk tuşuna basmışsa farkında olmayabilir. Başındaki sonundaki bu boşlukları elemeye yarar.

Kod: Tümünü seç

  With Query1 do
  begin
    Active := False;
    SQL.Clear;
    SQL.Add('SELECT * FROM TABLO1');
    SQL.Add('WHERE 1=0');
    if Trim(Edit1.Text) <> '' then SQL.Add('OR Adi    LIKE ' + QuotedStr( Trim(Edit1.Text) + '%' ) );
    if Trim(Edit2.Text) <> '' then SQL.Add('OR Soyadi LIKE ' + QuotedStr( Trim(Edit2.Text) + '%' ) );
    if Trim(Edit3.Text) <> '' then SQL.Add('OR Meslek LIKE ' + QuotedStr( Trim(Edit3.Text) + '%' ) );
    SQL.Add('ORDER BY Adi, Soyadi, Meslek');
    Active := True;
  end;
Resim
Resim ....Resim
MiskinComez
Üye
Mesajlar: 19
Kayıt: 29 Nis 2014 04:40

Re: Editlere Girilen bilgiyi database listelemek

Mesaj gönderen MiskinComez »

Yardımlarınız için teşekkürler.
Cevapla