query veya ado ile sorgu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

query veya ado ile sorgu

Mesaj gönderen bobasturk »

Merhaba arkadaşlar;

:arrow: kısa bir süre önce forumda iki tarih arası sorgulama sorusu vardı takip ettim ve bizimde böle bir sorunumuz vardı. Tarih alanlarını date yapmadığımız için query sorgumuz olmamıştı.
:arrow: tarih alanlarını date olarak tabloyu tekrar yaptım ve verileri yükledim
viper arkadaşımızın

Kod: Tümünü seç

var 
Tarih1, Tarih2 : TDate; 
begin 
query1.sql.clear; 
query1.sql.add('Select * from Tablo'); 
query1.sql.add('Where TARIH Between :TARIH1 and :TARIH2'); 
query1.parambyname('TARIH1').asdate :=strtodate(edit1.text); 
query1.parambyname('TARIH2').asdate :=strtodate(edit2.text);
yardımıyle iki tarih arası sorguyu yapabildik.
:arrow: şimdi sorum aynı bu sorguya string alanlı edit3 ekleyerek sorguyu genişletmek istiyorum. Yani 01.01.2004 ile 31.01.2004 tarihleri arası yok olanların kaydını ver. burada "yok" olanların alan adı İZ_DURUMU

Olabilirmi acaba tablolarım dbaseIV delphi7 ticari amaç yok
saygı ve sevgilerle
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

merhaba

Kod: Tümünü seç

var 
Tarih1, Tarih2 : TDate;
begin
query1.sql.clear;
query1.sql.add('Select * from Tablo');
query1.sql.add('Where TARIH >=');
query1.sql.add(''+strtodate(edit1.text)+'');
query1.sql.add('AND TARIH <=');
query1.sql.add(''+strtodate(edit2.text)+'');


//A:='01,11,1996';
//B:='01,12,1996';

//Where TARIH >= A AND TARIH <= B
// 11 ve 12 ay arasındaki sonuclar

//Where TARIH <= A AND TARIH >= B
// 11 ve 12 ay arası hariç sonuclar
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

anladım dersem yalan olucak

komutda edit1, edit2 görünüyor fakat edit3 görünmüyor.
biz üç edit koyduktan sonra bir düğme koyucaz ve edit1(tarih) ile edit2(tairh) arasındaki edit3(yok) olanların db grid de dökümünü alıcaz.

edit3 ü görmeyince kafam iyice karıştı birde // işaretleri kod da okunmuyor biliyorum. bu saatte benimde kafam bu kadar çalışır. :lol:

tşk. saygılar
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kod: Tümünü seç

var 
Tarih1, Tarih2 : TDate; 
begin 
query1.sql.clear; 
query1.sql.add('Select * from Tablo'); 
query1.sql.add('Where TARIH Between :TARIH1 and :TARIH2 and IZDURUM = :IZ_DURUMU'); 
query1.parambyname('TARIH1').asdate :=strtodate(edit1.text); 
query1.parambyname('TARIH2').asdate :=strtodate(edit2.text); 
query1.parambyname('IZ_DURUMU').asstring := edit3.text; 
Kolay Gelsin...

İyi Geceler.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

merhaba sen 3 sartın birden saglanmasınımı istiyorsun

yani liste de görünecekler
1-->01 01 1996 edit1 olanlar
2-->01 03 1996 edit2 olanlar
3-->01 04 1996 edit3 olmayanlar

burda sorguda biraz deyişiklik yapmak lazım
edit3 ile bire bir eşlesenleri istiyorsan
veya küçügünü veya büyügünü diyorsan


AND TARIH
kücük ve esitse <= edit3
büyük ve eşitse >= edit3
Eşitse = edit3

işini görür ama sen edit4 ihtiyac duyarsın

edit1 ile edit2 arası olanlar
edit3 ile edit4 arası olmayanlar

yapmak istedigin su an bana mantıksız geliyor ama şimdi yorum yapmıyorum
bu saatte sakıncalı olabilir yarın tekrar bakarım :lol:
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Benim anladığım edit3'ün textine göre verilen tarih aralığında olanları yada olmayanları istiyorsun. Böyle ise Edit3 yerine bir checkbox koyarsan daha iyi olur. Check edilip edilmediğine göre kodu değiştirirsin.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Evet checbox olayıda güzel fakat tablomda checbox olarak kullanmadım dbcombobox kullanarak "var" veya "yok", "erkek" veya "kadın" gibi seçimler sundum ve tabloya yazılmasını sağladım.

amacım iki tarih arasında bulunan var veya yok ları, erkek veya kadınları gibi sonucları bulmak. yani edit3 e string alanlardan herhangi biri olabilir.
iki tarih arasındaki osman isimlilleri de bulabilirim.

burada acemilikten date sorgusu yanına stringide eklenirmi eklenmezmi idi huso abi kodu yazmış deniyce

ve bunlara and koyarak kriter seçeneklerini arttırmak istiyorum.

teşekkür ve saygılarla
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Sanırım şu kod işini görür

Kod: Tümünü seç

var
Tarih1, Tarih2 : TDate;
begin
   if edit3.text='var'
   then begin
      query1.sql.clear;
      query1.sql.add('Select * from Tablo');
      query1.sql.add('Where TARIH Between :TARIH1 and :TARIH2');
      query1.parambyname('TARIH1').asdate :=strtodate(edit1.text);
      query1.parambyname('TARIH2').asdate :=strtodate(edit2.text);
    end
     else begin
      query1.sql.clear;
      query1.sql.add('Select * from Tablo');
      query1.sql.add('Where TARIH>:TARIH1 or TARIH<:TARIH2');
      query1.parambyname('TARIH1').asdate :=strtodate(edit1.text);
      query1.parambyname('TARIH2').asdate :=strtodate(edit2.text);
     end
    
 
kodu test edemedim. edit3 te sadece var veya yok olduğunu kabul ediyoruz tabii.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Hocam yanlız raporlama şeklinde döküm çekmek isterse alanda ki koşullama kısıtlama yapmaz var ve yok olan bütün dökümler dökülür.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Evet hüso abi raporlama gerekirse dökmemiz gerekecek. Ve sizin verdiğiniz kodlarda IZDURUM not found hatası veriyor
IZDURUM:String; şeklinde denedim falan olmadı acaba niyedir hata run diyince çalışıyor sorguya başlayınca bu hatayı veriyor.

kendimi iyi anlatabilme kabiliyetim yoktur ama

edit1=birinci tarih
edit2=ikinci tarih
edit3=herhangi bir değer bunu belirleyeceğim tabiki demek istediğim bu değerlerin bulunduğu alanlar string.
Bu alanlardan İZ_DURUMU, TESP_DURUMU gibi herhangi bir alanda olan var veya yok gibi bir şey yazıp
iki tarih arasında kaç tane olduğunu bulucam.

ilginiz için teşekkür ve saygılar
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

özür diliyorum

yani iki tarih arasında var diye sorarsam sadece onları dökecek

yok diye yazarsam sadece onları dökecek

üstteki yanlış oldu

sürçü lisan affola
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

var
Tarih1, Tarih2 : TDate;

begin
query1.sql.clear;
query1.sql.add('Select * from Raporlar2');
query1.sql.add('Where İNC_TARİHİ Between :TARIH1 and :TARIH2 and İZ_DURUMU=:İZ_DURUMU');
query1.parambyname('TARIH1').asdate :=strtodate(edit1.text);
query1.parambyname('TARIH2').asdate :=strtodate(edit2.text);
query1.ParamByName('İZ_DURUMU').AsString :=edit3.Text;
Query1.Open;
Hüseyin abi yukarıdaki gibi olayı çözdüm. hatam ise edit3 içindeki ('İZ_DURUMU') olayı imiş biz IZDURUMU diye yazmışız between deki de İZ_DURUMU olarak düzelttim şimdi istediğim sonucu veriyor teşekkürler :lol: :D

bu satıra and ile diğer istediklerimi eklersem olur heral. bide bu alanlardan tarihler haric diğerlerinden bi tanesi boş kalırsa hata verirmi acaba yoksa sorulan yani yazılanlarımı bulur sadece. deniycem :oops:

iyi çalışmalar
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

:oops: Sayenizde bu sorgulamayı yaptım tşk.

fakat qrreport ile çıktı almak istiyorum. Ado ile yaptıklarımı becerebiliyordum ama bde deki query ile sorgu ilk defa yaptım şimdi report sayfasına ben bakıyom oda bana bakıyo. sayfayı, alanları bağlayabilmem için forma hangi bileşeni koymam gerekiyor acaba.

tşk. saygı
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

olc yazdı::oops: Sayenizde bu sorgulamayı yaptım tşk.

fakat qrreport ile çıktı almak istiyorum. Ado ile yaptıklarımı becerebiliyordum ama bde deki query ile sorgu ilk defa yaptım şimdi report sayfasına ben bakıyom oda bana bakıyo. sayfayı, alanları bağlayabilmem için forma hangi bileşeni koymam gerekiyor acaba.
yeni form üzerine koydugunuz ; quickrep1 bileşeninin dataset ini diger formlardaki hangi table nesnesine sorgulama yaptı iseniz ona bağlayın dataset ini. yani formunuza öncelikle bir quickrep1 bileşeni atınız. daha sonra , qrband koyunuz ve object inspectordan qrbandtype ını title yapın ve rapor başlığını koyunuz...

daha sonra onun altına ikinci bir bank koyunuz onun band tipinide detail yapınız. bu işlemlerden sonra detail band üzerine qrdbtext leri koyunuz ve bunların dataset ini örneğin form1.datasource1 şeklinde datasetleri bağlayınız daha sonrada fieldlarını tek tek seçin. bu işlemlerden sonra artık sorgu işleminden sonra formunuzda raporfrm.quickrep1.print derseniz direk yazıcıya yazar , eger raporfrm.quickrep1.preview; derseniz karşınıza ön izleme yapar ve dilediğiniz zaman yazdırırsınız...

umarım anlata bilmişimdir.

Kolay Gelsin...
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

teşekkür ederim
sorunu şu şekilde hallettim. Report üzerine title ve detail koyduktan sonra isimlendirmeleri yaptıktan sonra table nesnesi koydum. DBText leri yerleştirdikten sonra bunların datasetlerini sorgu formundaki query1 e bağladım. reportun da data setini formdaki query1 e bağladım ve sorgu sonucu çıkan verileri çıktı olarak alıyorum.

iyi çalışmalar.
Cevapla