2 sorgu birden

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
pma
Üye
Mesajlar: 68
Kayıt: 26 Mar 2014 10:41

2 sorgu birden

Mesaj gönderen pma »

Otomasyonumda Kullandığım Kiralama İşleminden Sonra Veriler ("gecmis_table") adlı tabloma gidiyor tabloda kiralayan müşterinin adı ("mus_ad") ve filmi kiraladığı tarih ("G_Tarih") alanında tutuluyor

Ben 2 tarih arasında sorgulamayı bu kod ile;

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
var
Tarih1,Tarih2:String;
begin
Query3.SQL.Clear;
Query3.SQL.Add('SELECT * FROM gecmis_table WHERE G_Tarih BETWEEN :Tarih1 AND :Tarih2');
Query3.ParamByName('Tarih1').AsDate:= (DateTimePicker1.DateTime);
Query3.ParamByName('Tarih2').AsDate:= (DateTimePicker2.DateTime);
Query3.Prepared:=True;
Query3.Open;
if Query3.IsEmpty then
begin
Form1.Caption:='Belirtilen Tarihler Arasında Kayıt Bulunamadı!';
end
else
begin
Form1.Caption:='kayıt var!';
end;
end;
müşteri sorgulamayıda bu kod ile

Kod: Tümünü seç

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Query3.FilterOptions:=[foCaseInsensitive];
Query3.Filter:='Mus_Ad='+QuotedStr(Edit5.Text);
Query3.Filter:='Mus_Soyad='+QuotedStr(Edit6.Text);
Query3.Filtered:=true;
end;
yapıyorum ismini girdiğim müşteri bularak 2 adet datetimepicker dan girdiğim iki tarih arasında bu müşterinin kiraladığı filmleri dbgrid te filtreleyen sorguyu beceremedim acill yardım
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: 2 sorgu birden

Mesaj gönderen tayipk »

merhaba datetimepicker kullanırsan veri tarih ve saat formatında geri döner yani 01/01/2014 00:00:00 şeklinde veritabanında da bunu bulamayacağı için geri sonuç döndürmez. yapman gerekenler öncelikle datetimepicker değilde DATEEDIT kullanacaksın sonrada aşağıdaki dünzelmeleri yaparsan sorunun çözülecektir

Kod: Tümünü seç

Query3.ParamByName('Tarih1').AsDate:= (DateTimePicker1.DateTime);
Query3.ParamByName('Tarih2').AsDate:= (DateTimePicker2.DateTime);
yukarıdaki kodlarını aşağıdakiler gişbi düzenlersen sorun kalmaz.

Kod: Tümünü seç

Query3.ParamByName('Tarih1').value:= datetostr(Dateedit1.Date);
Query3.ParamByName('Tarih2').value:= datetostr(Dateedit2.Date);
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
pma
Üye
Mesajlar: 68
Kayıt: 26 Mar 2014 10:41

Re: 2 sorgu birden

Mesaj gönderen pma »

Yorum İçin teşekkür ederim aslında bu haliylede sonuc dödürüyordu ama sonradan bende farkedip düzelttim oraları amacım yazdığım sorgunun ismini edite yazarak aradığım müşterinin seçtiğim 2 tarih arasın kiraladığı filmleri görüntülemek sorgu bölümünü beceremedim
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: 2 sorgu birden

Mesaj gönderen tayipk »

ozaman sorgu kodunu aşağıdaki gibi değiştirelim bakalım istediğin sonuç çıkacakmı

Kod: Tümünü seç

Query3.SQL.Add('SELECT * FROM gecmis_table WHERE musteri_adi like ''%'+edit1.text+'%'' and G_Tarih BETWEEN :Tarih1 AND :Tarih2');
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
pma
Üye
Mesajlar: 68
Kayıt: 26 Mar 2014 10:41

Re: 2 sorgu birden

Mesaj gönderen pma »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);

begin
if edit1.Text='' then
ShowMessage('Müşteri Adını Giriniz')
else
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM mus_table WHERE Mus_Adi like ''%'+edit1.text+'%'' and K_Tarih BETWEEN :Tarih1 AND :Tarih2');
Query1.ParamByName('Tarih1').AsDate:= (DateTimePicker1.DateTime);
Query1.ParamByName('Tarih2').AsDate:= (DateTimePicker2.DateTime);
Query1.Prepared:=True;
Query1.Open;
if Query1.IsEmpty then
begin
Form1.Caption:='Belirtilen Tarihler Arasında Kayıt Bulunamadı!';
end
else
begin
Form1.Caption:='kayıt var!';
end;
end;
Kodu Kullandım Birde Şart Koydum Edit e Değer Girip Çalıştırınca Hata Vermeden Çalıştı Ama Edit i Boş Bırakıp Buton a Basarsam ShowMessage ı Çalıştırım Resimdeki Gibi Bir Hata Verdi

https://www.dropbox.com/s/bn8ye50oknjm3 ... .55.21.png
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: 2 sorgu birden

Mesaj gönderen tayipk »

begin end bloklarını kontrol etmen gerekiyor mesela

Kod: Tümünü seç

 if edit1.tex='' then
kodunun ardndan showmessage olayını begin end blogu içine al örn.

Kod: Tümünü seç

if edit1.text='' then
begin
showmessage('MÜŞTERİ ADINI GİRİNİZ...');
end else
if not (edit1.text='') then
begin
..
...
....
....
end;
gibi
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
pma
Üye
Mesajlar: 68
Kayıt: 26 Mar 2014 10:41

Re: 2 sorgu birden

Mesaj gönderen pma »

Zaman Ayırdığınız İçin Teşekkür Ederim Kodlar Çalıştı
Cevapla