Bir Alana Bağlı Diğer İşlemleri Sorgulama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Bir Alana Bağlı Diğer İşlemleri Sorgulama

Mesaj gönderen pasa_yasar »

iyi çalışmalar bir sorgulamam var.

Kod: Tümünü seç

adoquery45.close;
adoquery45.sql.clear;
adoquery45.sql.add('SELECT * from carihareketler');
adoquery45.sql.add('where CID='''+ADOQuery1ID.AsString+'''');
adoquery45.SQL.add('or turu=''Nakit Tahsilat''');
adoquery45.SQL.add('or turu=''Nakit Ödeme''');
adoquery45.SQL.add('or turu=''Kredi Kartı Ödeme''');
adoquery45.SQL.add('or turu=''Kredi Kartı Tahsilat''');
adoquery45.SQL.Add('order by islemtarih');
adoquery45.open;
burada önce müşteriye bağlı işlemler bu işlemlerden ise yukarıdaki işlemlerin sorgulanmasını istiyorum. istediğim sonuca ulaşamadım. nasıl yapılabilir acaba. birçok şekide denedim olmadı and işe yaramadı.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ilk "or" u and yap ve diğer orları parantez içine al
bide öyle dene.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kod: Tümünü seç

adoquery45.SQL.add('or turu=''Nakit Tahsilat'''); 
adoquery45.SQL.add('or turu=''Nakit Ödeme'''); 
adoquery45.SQL.add('or turu=''Kredi Kartı Ödeme'''); 
adoquery45.SQL.add('or turu=''Kredi Kartı Tahsilat'''); 
Tam anlayamadım ama bu alanları checkbox, listbox lara koyarak seçtirip sorguna ekleyebilirsin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

- parantez koydum sürekli hata verdi. ufak bir örnek yapabilirmisin.
- bu işlemler kullanıcı seçimli değiller. müşteri nakit hareketlerini gösteren bilgiler. seçimli olduğu zaman muhtemelen aynı sorunla karşılaşırım. filtre tek seçimli değil çok seçimli
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

aslangeri yazdı:s.a.
ilk "or" u and yap ve diğer orları parantez içine al
bide öyle dene.
kolay gelsin.

Sorguyu bu şekilde değiştir demek istedi.

Kod: Tümünü seç

adoquery45.close; 
adoquery45.sql.clear; 
adoquery45.sql.add('SELECT * from carihareketler'); 
adoquery45.sql.add('where CID='''+ADOQuery1ID.AsString+''''); 
adoquery45.SQL.add('and (turu=''Nakit Tahsilat'''); 
adoquery45.SQL.add('or turu=''Nakit Ödeme'''); 
adoquery45.SQL.add('or turu=''Kredi Kartı Ödeme'''); 
adoquery45.SQL.add('or turu=''Kredi Kartı Tahsilat'')'); 
adoquery45.SQL.Add('order by islemtarih'); 
adoquery45.open; 
seçimli olmasınının da bir farkı yok, işaretli checkbox kadar SQL ekleme yapacaksın ve sorguyu sonunda kapatıp açacakçın ister tek ister hepsini seçsin farketmez.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

yardımlarınızdan dolayı tşk ederim.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Sana kendi kullandığım sorgu oluşurma kodunu vereyim...Bir tane panel içine sorgu kriterlerini koy...checkbox,combobox vs yani sorguya hangi kriterleri koyacaksan ona göre ayarla...
Kod panel içindeki bileşenlerin değerlerini duruma göre parametre olarak ekleyecektir....örneğin checkbox seçili ise parametreye dahil edecektir....Yalnız önemli olan bileşen isimleri FieldName lerin ile aynı olacak....Çoklu parametrik sorgularda kolaylık sağlayacak bir koddur buyur dene...ilk önce sonucu istersen bir memo ya at nasıl bir SQL döndürüyor bak.....

Kod: Tümünü seç

procedure TForm3.Button1Click(Sender: TObject);
var
strSQL:WideString;
i:byte;
list:TStringList;
begin
try
list:=TStringList.Create;
with panel5,list do
begin
add('select * from TabloX where 1=1 ');
for i:=0 to ControlCount-1 do
 begin
   if Controls[i] is TComboBox then
      if trim((controls[i] as TComboBox).Text)<>'' then
        begin
          Add(' and '+(controls[i] as TComboBox).Name+'='+QuotedStr((controls[i] as TComboBox).Text));
        end;
   if controls[i] is TCheckBox then
     if (controls[i] as TCheckBox).Checked then
        begin
          add(' and '+(controls[i] as TCheckBox).Name+'='+'''1''');
        end;
 end;
strSQL:=list.Text; 
Form1.sorgu(Query1,strSQL);
end;
finally
list.Free;
end;
end;
Burda gördüğün gibi checkbox seçili ise değer olarak '1' döndürüyor ve sadece seçili olanları koda ekliyor....deneyince görüceksin...burdaki OR veya AND olma işini koddan kendine göre değiştir...
Cevapla