birden fazla alana göre arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

birden fazla alana göre arama

Mesaj gönderen zaxacm »

herkese iyi çalışmalar arkadaşlar
Şöyle bir sql kodunu nasıl yazarız acaba

procedure Tfgoster.Edit2Change(Sender: TObject);
begin
fana.ADOQuery1.Close;
fana.ADOQuery1.SQL.Clear;
fana.ADOQuery1.SQL.Add('select * from personel where alan1 like"'+Edit2.Text+'%"');
fana.ADOQuery1.Open;
end;

bu kodu kullanıyorum ok sorun yok ama.Ben 3 alanda aynı aynda sorgulama yapmak istiyorum.
3 tane combobox var ve bir tane edit var.alan1 alan2 alan3 e göre aynı anda nasıl aratma yapabilirim acaba.
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 »

fana.ADOQuery1.SQL.Add('select * from personel where alan1 like"'+Edit2.Text+'%'' and alan2 like'''+Edit2.Text+'%'' and ..);
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
zaxacm
Üye
Mesajlar: 129
Kayıt: 05 Ara 2005 05:48

Mesaj gönderen zaxacm »

fana.ADOQuery1.SQL.Add('select * from personel where cinsiyet like "'+combobox1.Text+'%"' and isdurumu like "'+combobox2.Text+'%"' and serturu like'''+combobox4.Text+'%''); şeklinde yaptım ama aşağıdaki hatayı verdi.Kodlamada bir hata mı yaptım acaba.

[Error] Ugoster.pas(271): Undeclared identifier: 'isdurumu'
[Error] Ugoster.pas(271): Illegal character in input file: '"' ($22)
[Error] Ugoster.pas(271): Illegal character in input file: '%' ($25)
[Error] Ugoster.pas(271): Unterminated string
[Error] Ugoster.pas(272): Missing operator or semicolon

Bir de yukarıdaki kodu düzelttikten sonra bir ekleme yapmam lazım şöyleki:


fana.ADOQuery1.Close;
fana.ADOQuery1.SQL.Clear;

if combobox3.Text='1.Tercih' then
fana.ADOQuery1.SQL.Add('select * from personel where ilce1 like"'+Edit2.Text+'%"');
if combobox3.Text='2.Tercih' then
fana.ADOQuery1.SQL.Add('select * from personel where ilce2 like"'+Edit2.Text+'%"');
if combobox3.Text='3.Tercih' then
fana.ADOQuery1.SQL.Add('select * from personel where ilce3 like"'+Edit2.Text+'%"');
if combobox3.Text='4.Tercih' then
fana.ADOQuery1.SQL.Add('select * from personel where ilce4 like"'+Edit2.Text+'%"');
if combobox3.Text='5.Tercih' then
fana.ADOQuery1.SQL.Add('select * from personel where ilce5 like"'+Edit2.Text+'%"');
if combobox3.Text='6.Tercih' then
fana.ADOQuery1.SQL.Add('select * from personel where ilce6 like"'+Edit2.Text+'%"');

fana.ADOQuery1.Open;
bu kodları edit2nin onchange olayına yazıyorum ve combobox3 ün aldığı değere göre arama yapıyo sorun yok.Yanlız enbaştaki kodla bu kodları tek çatı altında toplamam lazım.
Yani (combobox1) + (combobox2) + (combobox4) + (combobox3 e göre edit2) var mı böyle birşey :)
hacikisi
Üye
Mesajlar: 64
Kayıt: 24 Şub 2004 07:29
Konum: Gaziantep

c

Mesaj gönderen hacikisi »

güzel
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.

Hz.Muhammed (S.A.V.)
Resim
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 »

Hatayı tırnaklar düzgün bir şekilde açılıp kapatılmadığı için alıyorsun. Bir string ifade bilindiği gibi tırnakla (') başlar ve biter.
'Deneme' gibi işin içine bu tırnağı bu bilgi içinde kullanmak istediğimizde ortalık biraz karışıyor. Aslında tırnak yazmak için çift tırnak kullanmak yeterli mesela Ali'nin gibi bir değeri yazmak için 'Ali''nin' yazmak gerekiyor. Sadece tırnak için ise '''' yazılır. Bir string ifadenin başında veya sonunda kullnımına örnek ise 'Ali''', '''nin' şeklinde görünecektir. String bilgiler görüntülerde biraz tuhaf olsada kullanımı bu şekilde olacaktır.

Bir sorgu oluşturmak biraz hamallık olsa da çok zor bir konu değildir aslında.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@zaxacm

Tırnak karmaşası yaşıyor olduğunda QuotedStr() fonksiyonunu kullan. Sana rahat nefes aldıracaktır. İşlevi senin için tırnak içine alınmış hali döndürmesidir.

Kod: Tümünü seç

  fana.ADOQuery1.SQL.Add('select * from personel where cinsiyet like '
                      + QuotedStr( combobox1.Text+'%' )
                      + ' and isdurumu like '
                      + QuotedStr( combobox2.Text+'%' )
                      + ' and serturu  like '
                      + QuotedStr( combobox4.Text+'%' ) );
Resim
Resim ....Resim
Cevapla