farklı bir sql sorgusu hazırlamayla ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

farklı bir sql sorgusu hazırlamayla ilgili

Mesaj gönderen huseyinert »

merhaba arkadaşlar

rapor hazırlayacağım kriterler;

firma_adi, yil, aylar,hesap_turu,hesap

bunların bulundupu bir tablo var ben her birisi için comboboxlar koydum forma önce bu combolardan kriterler seçiliyor sonrada listele butonuna basılıp kayıtların gelmesi gerekiyor şimdi burda combolardan birinde seçim yapılıp diğeri seçilmeyebilir veya ikitanesi seçilip geri kalanlar veya hepsi gibi burada listele butonunna yazacağım sql cümleciği çok karışıyor her birisi için if le şart koyup şu combo boş veya doluysa şunu yap demek çözüm gibi ama çok uzun kodlar gerektiyrecek bunun daha kısa bir yolu varmıdır acaba ?

Kod: Tümünü seç

gelir_gider.Close;
gelir_gider.UnPrepare;
gelir_gider.SQL.Clear;
gelir_gider.SQL.Add('select *from gelir_gider where firma_adi='+#39+ComboBox1.Text+#39+' and yil='+#39+ComboBox2.Text+#39+' and aylar='+#39+ComboBox3.Text+#39+' and hesap_turu='+#39+ComboBox4.Text+#39+' and hesap='+#39+ComboBox5.Text+#39+' order by firma_adi,yil,aylar,hesap_turu,hesap');
gelir_gider.Prepare;
gelir_gider.Open;
kod olarak bunu kullandım ama burda hepsindede kayıt seçilmesi gerekiyor.

yardımlarınızı bekliyorum hayırlı çalışmalar
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
bu gibi işlemlerde ben combonun ilk elemanını boş giriyorum.
karşılaştırmalar için parametre kullanıyorum.
where ifadesindede

Kod: Tümünü seç

where (firma_adi=:p_firmaadi or :p_firmaadi='')
şeklinde yapıyorum.
burda combonun textinde hangi firma adı varsa onu getirir.
combonun texti boşsa tüm firmalar gelir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

burada p_firma_adi combo nun name mi

birde bu yapıyı tam anlayamadım nasıl benim söylediğime uyarlanır
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba Hüseyin Bey,
Sitede daha önce görmüştüm. Arkadaşlar where kısmına kadar sql i bir satıra ekliyorlar. Where den sonra ek olarak '1=1 and ' şeklinde kalıbı yazıyorlar. Sonra combobox ı kontrol edip gerekiyorsa şartı sql koduna ekliyorlar.
Sql koduna 1=1 and bırakmanız sizi kombinasyondan kurtarıyor. Tek kontrolünüz eğer hiç biri seçilmemişse örneğin 2=2 bırakmanız olacak.

İyi çalışmalar.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

hocam nasıl olacak bu 1=1 falan gönderdiğim kodda gösterebilirmisiniz

anlayamadım bu konuyu bir türlü :(
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Kod: Tümünü seç

q1.close;
q1.sql.clear;
q1.sql.add ('select * from deneme where 1=1 and ')

if combobox1.text<>'' then q1.sql.add('firma_no='+combobox1.text);
if combobox2.text<>'' then q1.sql.add(' donem_no='+combobox2.text);
gibi bir şey hocam hatalı yazmış olabilirim ama mantık bu .
İyi çalışmalar.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
p_firmaadi parametre. benim dediğim şekilde yapmak istersen kodlarını şöyle değiştirmen gerekir.

Kod: Tümünü seç

gelir_gider.Close;
gelir_gider.UnPrepare;
gelir_gider.SQL.Clear;
gelir_gider.SQL.Add('select *from gelir_gider where 
(firma_adi=:p_firmaadi or :p_firmaadi='''') and
(yil=:p_yil or :p_yil='''') and
(aylar=:p_aylar or :p_aylar='''') and
(hesap_turu=:p_hesapturu or :p_hesapturu='''') and
(hesap=:p_hesap or :p_hesap='''')
order by firma_adi,yil,aylar,hesap_turu,hesap');
gelir_gider.parambyname('p_firmaadi').value:=ComboBox1.Text;
gelir_gider.parambyname('p_yil').value:=ComboBox2.Text;
gelir_gider.parambyname('p_aylar').value:=ComboBox3.Text;
gelir_gider.parambyname('p_hesapturu').value:=ComboBox4.Text;
gelir_gider.parambyname('p_hesap').value:=ComboBox5.Text;
gelir_gider.Open;
comboların itemsine boş bir eleman eklemeyi unutma.
böylelikle seçimi iptal ettirmek için uğraşmanada gerek kalmaz.
Not: kodlarda syntax hatası olabilir ama mantık bu şekilde.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

hocam hata veriyor bir yerde param mı tanımlamam gerekiyor synex hatası verimiyor -104 line-1 falan diye hata veriyor ne yapmam gerekiyor hocam

tşk. ederim ilginize
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

öncelikle "hata veriyor" ifadesinin bizim için birşey ifade etmediğin anlamalısın.
Verdiği hata mesajını tam olark yazarsan hata mesajının içinde çoğu zaman cevapda yazar.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

http://www.ayyildizbilisim.com/hata.jpg
hata mesajı bu şekilde çıkıyor
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

sanırım oluşturduğun sql de bi sıkıntı var.
tabloyu open etmeden önce sql i bi memoya falan biyerlere yazdır ve kontrol et.
aynı sql i ibexpertte falan çalıştırmayı dene.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

hocam sql de bir sorun normal çalışıyor, başka bir yerden oluyor bu sanırım kodda bir sorun var ama neresinde onu bende bilmiyorum
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

valla bende bilmiyorum...
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Incorrect Value diyor. Date tipindeki bir alana ComboBox'un text'ini direkt atamıyorsunuz değil mi ? Veya string olmayan bir alana string atamak gibi..

bkz.

Kod: Tümünü seç

gelir_gider.parambyname('p_yil').value:=ComboBox2.Text; 
Resim
Resim ....Resim
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

hocam yıl alanı date formatında değil string formatında tarih girilmiyor zaten oraya yıl/dönem adı giriliyor
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Cevapla