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
Editlere Girilen bilgiyi database listelemek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 19
- Kayıt: 29 Nis 2014 04:40
-
- Üye
- Mesajlar: 62
- Kayıt: 18 Eyl 2011 02:31
Re: Editlere Girilen bilgiyi database listelemek
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.
onun için editin onkeypress olayına sorgunu yazarsan her bastığın harfte uygun kayıtları listeler.
Re: Editlere Girilen bilgiyi database listelemek
Query ile filtrelemek istiyorsan (editin on key press eventine yazılacak veya bir butonun on click da yazabilirsin)
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ç
ADOQuery1.Close;
ADOQuery1.Sql.Clear;
ADOQuery1.Sql.Add('Select * From TABLO1 Where ADI_SOYADI like "%'+Edit1.text+'%"');
ADOQuery1.Open;
end;
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;
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;
-
- Üye
- Mesajlar: 19
- Kayıt: 29 Nis 2014 04:40
Re: Editlere Girilen bilgiyi database listelemek
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
" 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
Re: Editlere Girilen bilgiyi database listelemek
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.
Re: Editlere Girilen bilgiyi database listelemek
Merhaba.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
- 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;
-
- Üye
- Mesajlar: 19
- Kayıt: 29 Nis 2014 04:40
Re: Editlere Girilen bilgiyi database listelemek
Yardımlarınız için teşekkürler.