Birden fazla alanı kullarak arama yapmak.???

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Birden fazla alanı kullarak arama yapmak.???

Mesaj gönderen vedatkaba »

Arkadaşlar herkese kolaylar gelsin...


Şimdi sorun değil aslında ama bir yol çizmek istiyorum kendime bir türlü yapamadım...

1-Bir tabloda 19 alan var....
2-Arama yapmam gerekiyor...
3-Arama yapmak için forma 8 tane alanı kullanarak arama yapmak için dizayn etttim....
4-yolu burdan sonra çizemedim işte....

Varsayımlarım.........

1-Kullanıcı hangi alanı kullanarak arama yapacağını bilemem...
2-Kullnıcının kaç tane alanı kullanarak arama yapacağını yine bilemem...

Yolu burdan sonra ççizecem..

1-Nasıl bir şey yapayımki kullanıcı bu 8 alandan hangisine veya hangilerine bigi girerse ona göre arama yaptırmayı nasıl yapayım...
2-Kodlamada ne kullanmalıyımki herşey nizami bir şekilde yanyana gelerek SQL arama cümlesi oluştursun...
3-Yada bunu her ne şekilde yapan varmı yapan varsa inşallah kodlarını bizlerle paylaşır.
Anlatabilmişimdir umarım ...

Çok teşekkür ederim kolay gelsin.........
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

yapacağın where cümleciğini oluşturmak..
yani;

Kod: Tümünü seç

sWhere = 'where 1 = 1 ';

if text1 <> '' then
sWhere = sWhere + ' and alan1 = ' + text2; // yada like..

text2 için
text3 için
....
....
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

pardon ben soruyu yanlış anlamışım hocam..

şöyle bişey yapsan olmazmı?
arama yapılacak alanlar için checkbox lar koysan ve tek edit koysan..
checkbox ların check durumunu kontrol edip o alanlarda tek edit e girileni arasan..
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

Kod: Tümünü seç

if edit1.text<>''  then 
begin 
query1.sql.add('and ad='+edit1.text);
end;
if edit2.text<>''  then 
begin 
query1.sql.add('and soyad='+edit2.text);
end;

yukarıda arttırabilirsin. ama where başta olacak. eğer sabit araman yoksa where için

Kod: Tümünü seç

query1.sql.add('where id>'+0);
böyle birşeyde girersin where olmuş olur.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

hocam demek istediğinizi anladım ama 1, 5, 6, 8, edite bilgi girdiğini varsayarsak tabi bu bir varsayım bunu nasıl yapacağız, yani hepsini kontrol edicez bilgi varmı yokmu diye ama takıldığım dediğiniz gibi sonsuz bir döngüye girmezmi olay 8 edit için düşündüğünüz zaman 1 yanında hangilerini tercih edebilir veya 2. edit ile hangilerini yanyana kullanır vs. vs. yada ben anlamadım örneğinizi .
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
MoSoft
Üye
Mesajlar: 80
Kayıt: 10 Nis 2005 10:45
Konum: Askerden....
İletişim:

Mesaj gönderen MoSoft »

Kod: Tümünü seç


query1.close;
query1.sql.clear;
query1.sql.add('SELECT * FROM tabloadı where');

if edit1.text<>''  then 
query1.sql.add('alanbir='+edit1.text); 
end; 
if edit2.text<>''  then 
begin 
query1.sql.add('and alaniki='+edit2.text); 
end; 
gibi yazman lazım :D.
Şafak 300 ( 10.04.2005) dü artık Yok....

http://www.ucretsizyazilim.com
Kısaca Ben : http://www.google.com.tr/search?hl=tr&q ... 5%9F&meta=
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

burada sonsuz döngü yok. 1 yanında hangisini seçerse seçsin onuda sorgulama kriterine alacak.

1. edit ad ise eğer ada birşeyler girilmişse adı alacak yoksa geçecek 2 ye
2. edit soyad boş ise geçecek 3 e
3. edit telf boş ise geçecek 4 e
4. edit ev adres diyelimki dolu bunu kritere ekleyecek ve geçecek 5 e
5. edit iş adres boş ise geçecek 6 ya
6. edit tcno ise dolu ise bunuda ekleyecek geçecek 7 ye
7. edit saç rengi ise boş ise geçecek 8 e
8. edit boyu ise boş ise bitecek

böylece

Kod: Tümünü seç

query1.close;
query1.sql.clear;
query1.sql.add('select * from musteri');
query1.sql.add('where id>0 ');
query1.sql.add('and adres='istiklal cad');
query1.sql.add('and tcno='123456789' ');
query1.open;
adreste = değilde istiklal geçen adresleri bulur like kullanırsan esnek olur. içinde istiklal cad geçen bütün adresilerin bulunduğu kayıtları gösterir.

sanırım anlatabildim ama anlattığınızı çok fazla anlamadım
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Tamamdır bu iş oldu checkleri tek tek kontrol ederek hallettik.Aslında buda güzel bir çözüm ama arama işini yavaşlatacığını düşünmüştüm inşallah öyle bir sorun olmaz tabi az kayıt üzerinde denedim sonuç iyi ama ..Tek tek kontrolden sonra SQL cümlesi oluşturup onu uygulatmak biraz zaman alır diye pek uygulamak istemedim ama sizlerden gelen cevaplarda bu yönde oldu acaba diyorum bu yöntem ileride sorun yaparsa nasıl geliştirebilirm ufak bir ışık belirdi aslında onuda denemek istiyorum bence daha hızlı olur diye düşünüyorum.
Şu anda bu yöntem yeter diye düşünüyorum çok teşekkür ederim arkadaşlar.Kolay gelsin
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Bilakis, SQL sonucunda ne kadar az kayıt çıkıyorsa sorgu o kadar çabuk gerçekleşir. Yani şartların artması demek SQL'in hızlı çalışması anlamına geliyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Bence 8 alana göre arama çok fazla ;yani 8 alanın değerlerini bir tanesi yanlış girilmesi sonucu raporlar hep yanlış çıkabilir.(veya boş gelebilir)

Azaltmanda veya raporları ayırmanda fayda var..
yani 4 alan için bir sorgu
diğer 4 alanda arama için bir sorgu

Diye düşünüyorum.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Hocam zaten 8 alanda birden arama yapması çok nadir olur yada hiç olmaz diye düşünüyorum sadece buradaki amaç kullanıcıya kolaylık sağlamak yani kayıt hakkında bildiği bilgilerden biri mutlaka 8 tane arama alanında vardır diye düşünüyorum sonuç olarak kullanıcı firmadını bilmese semt bilgisini kullanacak veya nebilim alternatif olsun diye düşündüm ..Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Cevapla