iki tarih arası + başka bir alanda aynı anda arama yapmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

iki tarih arası + başka bir alanda aynı anda arama yapmak

Mesaj gönderen serkan »

arkadaşlar sizlerin sayesinde iki tarih arası ve aynı anda 2 alanda sorgulama yapmayı öğrendik.
ama benim amacım iki tarih arasında serviselemanının yaptığı işleri bulmak yani eleman alanından x ismini bulup istenilen iki tarih arasında yaptığı işleri dbgridde listelemek..tabi bunları çoğaltmak mümkün.
tek sorguda bunu nasıl yaparım yardım pls..
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

AND ve/veya OR kullanmalısın.

AND kullanırsan sadece her iki şartıda sağlayan kayıtlar döner.

WHERE Şart1 AND Şart2

sadece her iki şartı sağlayan kayıtlar döner. OR'da ise şartlardan birinin sağlanması durumunda o kayıt döner. Burda gerekli yerlerde parantez kullanman gerekir. Senin istediğin tarzda bir şart cümlesi şöyle olmalı.

WHERE (TARIH BETWEEN '01.01.2003' AND '31.01.2003')
AND (ELEMAN='Ahmet Serdar')

gibi olmalı. Burda istediğin kadar AND, OR kullanarak listeyi uzatabilirsin.

Kolay gelsin.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam cehaletimize sayın ama yukarıdaki kodda veri yerine sırasıyla edit1.text,edit2.text,edit3.text kullanırmısın?
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

WHERE (TARIH BETWEEN '''edit1.text''' AND '''edit2.text''')
AND (ELEMAN='''edit3.text''')

galiba bu işe yarar
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba Erkan,

arada + ların olması lazım. Gerekli yazımın nasıl olacağı ile ilgili bir yazıyı, Makale ve İpucu forumuna ekledim.

Kolay gelsin.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

ilginize teşekkürler bu tür sorgulamada alanlarınhepsini girmek gerekiyor galiba diyelimki eleman adını boş bıraktık iki tarih arasındaki tüm kayıtların listelenmesini istiyorum ama olmuyor eleman alanındaki boş kayıtları buluyor bunu yapan bir kod var elimde params lar falan atanmış ama o kodada iki tarih arasını ekleyemedim birçok string alanda arama ypıyor boş bıraktığımız alanlarda boş olanı değil tüm kayıtları listeliyor..
bunu yapan bir kod varmı...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam bence bu kadar detaya kadar gerek yok. Eğer az çok pascal biliyorsan bunu yapman lazım. Ben sana yöntemi anlatıyım.

Bir string değişken tanımla, mesela SQLCumlesi. Buna değerleri kontrol ederek (if ile) ifadeleri ekle, en son Query'e bu cümleyi ekle.

Şunu ver, bunu yaz iyi güzel de bu sizi tembelliğe alıştırır. Eğer ısrar ediyorsanız yine yazarım kod ama biraz uğraşıp kenidinizin bulması bence daha iyi olur. Klasik örnektir bir daha yazayım : Balık tutmayı öğrenmeniz lazım ki, hiç bir zaman aç kalmayın :)

Kolay gelsin.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam dediklerinize katılıyorum bende zaten pes etmeden forumda çok fazla soru sormuyorum zaten delphiyi öğrenmek konusunda bu şekilde zorlayarak çok yol aldım.bu arama konusunda sürekli birşeyler deniyorum
hiç yol almadım diyemem bu şekildede programım iş görür.programımın kullanıcı kitlesi genelde ETA Paket programını kullanan kişiler bilmem programı kullandınızmı hiç.gerçekten arama konusuna çok önem vermişler
bence sql in en gerekli olduğu şey arama konusunda çok yardımcı olması ve bu konuda çok esneklik sunmalı kullanıcıya ve programcıya.çok sık kullanılan bu iş için bazı hazır kontroller koymaları lazım bence(filtreleme ve arama işleri için)örneğin filtercombobox,searchedit gibi bu konuda delphi ile ilgilenen bir çok arkadaşım şikayetçi..bu konuda ücretsiz companent yazmak hiç aklınıza geldimi veya cüzi fiyatta..
bahsettiğiniz kodu yazarsanız sevindirik olurum..
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

mustafa hocam bende yazdıktan sorna farkettim.

aslında doğru halini ('''+edit1.text+''' ) gönderecektimde bi işim çıkınca unuttum.

siz arkadaşa yardımcı olmuşsunuz. sağolun abi.

benim kullandığım bir sql yöntemi var. belki biraz bu örnek olur

var
sqlval : string;
begin

sqlval := 'select * from data where (tarih between ' + edit1.text + ' and ' + edit2.text + ')' + ' and ' + '(eleman = ' + edit3.text;

qer.close;
qer.sql.clear;
qer.sql.add(sqlval);
qer.open;
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Cevapla