esselamü aleyküm
arkadaşlar bi sorgum var daha açıkçası bi sonucu göstermek için 4 adet veri tabanından bilgi çekiyorum ancak bu bilgilerin hepsi zorunlu alanlar
değil kullanıcı zorunlu alanlardan birini girmediği zaman query açıldığında yapılan kaydı göremiyorum
bunun için şarta bağlı sorgulama yapmam lazım geldiğini düşünüyorum yani zorunlu alan lardan biri girilmediği zaman değer 0 veya null olduğu zaman o tablo ile ana tablo arasında koyduğum şartı geçerek bana sorgu oluşturmasını istiyorum yani değer 0 ise o şartı geçsin değilse şartı uygulasın gibi yardımcı olursanız sevinirim. şimdiden hepinizden allahrazı olsun
bu arada bu yaptığım sorguyu gridin ilk açılışında kullanıyorum
sql dilinde şarta bağlı sorgulama yapma
-
- Üye
- Mesajlar: 21
- Kayıt: 02 Oca 2008 07:46
- Konum: istanbul
sql dilinde şarta bağlı sorgulama yapma
Zulmü alkışlayamam, zalimi asla sevemem;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Bu tür işler programlama tarafında yapılırsa daha pratik olur.Burada hazırlanan SartVer ve SartBirlestir fonksiyonları kullanıcının boş geçtiği editler için şartları es geçer. Eğer verilmiş kayıtlar için Null değere sahip satırlarda sorun yaşıyorsan o zaman şartı aşağıdaki isNull kullanarak oluşturursan sorun kalmaz. İyi çalışmalar.
Kod: Tümünü seç
function SartVer(const AlanAdi,Deger:String;const Op:String='='):String;
begin
if (Alan<>'') and (Deger<>'') then Result:=Format('(%s%s%s)',[Alan,Op,Deger])
else Result:='';
end;
function SartBirlestir(const Sart1,Sart2:String;const Op:String='and'):String;
begin
if Sart1='' then Result:=Sart2
else if Sart2='' then Result:=Sart1
else Result:=Format('(%s %s %s)',[Sart1,Op,Sart2]);
end;
.
.
.
var Sart:String;
begin
Sart:=SartVer('Kod',Trim(Edit1.Text));
Sart:=SartBirlestir(Sart,SartVer('Ad',Trim(Edit2.Text)));
Sart:=SartBirlestir(Sart,SartVer('No',Trim(Edit3.Text)));
Sart:=SartBirlestir(Sart,SartVer('Tur',Trim(Edit4.Text)));
//vs. vs.
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select * from [Kayit]';
if Sart<>'' then ADOQuery1.SQL.Add(Format('where %s',[Sart]));
ADOQuery1.Open;
end;
Kod: Tümünü seç
Sart:=SartVer('isNull(Kod,'''')',Trim(Edit1.Text));
Sart:=SartBirlestir(Sart,SartVer('isNull(Ad,'''')',Trim(Edit2.Text)));
Sart:=SartBirlestir(Sart,SartVer('isNull(No,0)',Trim(Edit3.Text)));
Sart:=SartBirlestir(Sart,SartVer('isNull(Tur,0)',Trim(Edit4.Text)));
//vs. vs
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 21
- Kayıt: 02 Oca 2008 07:46
- Konum: istanbul
ş
şaban ustam teşekkür ederim şu anda okudum kodu
biraz karışık geldi ama eminim anlamışsınızdır
ve sorunu bu şekilde çözümleyeceğimi düşünüyorum
biraz karışık geldi ama eminim anlamışsınızdır
ve sorunu bu şekilde çözümleyeceğimi düşünüyorum
Zulmü alkışlayamam, zalimi asla sevemem;
-
- Üye
- Mesajlar: 21
- Kayıt: 02 Oca 2008 07:46
- Konum: istanbul
SELECT dbo.bme_hesaplar.hesap_id AS EXPR3, dbo.bme_hesaplar.hesap_kodu AS EXPR4, dbo.bme_hesaplar.hesap_unvan AS EXPR5,
dbo.bme_hesaplar.vergi_dairesi AS EXPR6, dbo.bme_hesaplar.vergi_no AS EXPR7, dbo.bme_hesaplar.alicimi AS EXPR8,
dbo.bme_hesaplar.aktifmi AS EXPR9, dbo.bme_fason_islemler.fason_islem_id AS EXPR10, dbo.bme_fason_islemler.fason_islem_kodu AS EXPR11,
dbo.bme_fason_islemler.fason_islem_unvan AS EXPR12, dbo.bme_fason_islemler.fason_islem_aciklama AS EXPR13,
dbo.bme_fason_islemler.fason_islem_default_fiyat AS EXPR14, dbo.bme_fason_giris.giris_saat AS EXPR15,
dbo.bme_fason_giris.faturalandimi AS EXPR16, dbo.bme_fason_giris.giris_not AS EXPR17, dbo.bme_fason_giris.miktar AS EXPR18,
dbo.bme_fason_giris.urun_aciklama AS EXPR19, dbo.bme_fason_giris.fason_islem_id AS EXPR1, dbo.bme_fason_giris.adres_id AS EXPR20,
dbo.bme_fason_giris.hesap_kodu AS EXPR2, dbo.bme_fason_giris.giris_tarih AS EXPR21, dbo.bme_fason_giris.fis_no AS EXPR22,
dbo.bme_fason_giris.giris_id AS EXPR23, dbo.bme_fason_giris.*, dbo.bme_adresler.il_id AS EXPR24, dbo.bme_adresler.hesap_kodu AS EXPR25,
dbo.bme_adresler.adres AS EXPR26, dbo.bme_adresler.adres_yetkili AS EXPR27, dbo.bme_adresler.adres_etiket_id AS EXPR28,
dbo.bme_adresler.adres_id AS EXPR29, dbo.bme_adresler.*, dbo.private_adres_etiket.adres_etiket AS EXPR30,
dbo.private_adres_etiket.adres_etiket_id AS EXPR31, dbo.private_adres_etiket.*
FROM dbo.bme_adresler INNER JOIN
dbo.private_adres_etiket ON dbo.bme_adresler.adres_etiket_id = dbo.private_adres_etiket.adres_etiket_id INNER JOIN
dbo.bme_hesaplar ON dbo.bme_adresler.hesap_kodu = dbo.bme_hesaplar.hesap_kodu INNER JOIN
dbo.bme_fason_giris ON dbo.bme_adresler.adres_id = dbo.bme_fason_giris.adres_id INNER JOIN
dbo.bme_fason_islemler ON dbo.bme_fason_giris.fason_islem_id = dbo.bme_fason_islemler.fason_islem_id
WHERE (dbo.bme_hesaplar.hesap_kodu = '34A5')
şaban ustam bakın ben bu sorgudan
aşağıdaki bilgileri çekiyorum
hesap_kodu
hesap_unvan
fiş no
tarih
saat
adres_etiket
adres_yetkili
fason islem kodu
fason işlem adi
ürün açıklama
miktar
giriş not
faturalandimi 1 / 0 evet / hayır
kayıtlar arka planda id ler üzerinden dönüyor(giriş id si üzerinden takip ediyorum ama kayıt bu fieldlarla anlaçılır oluyor)
ben burada adocommand ile
kaydı şöyle yapıyorum
insert into bme_fason_giris (fis_no, giris_tarih, giris_saat, hesap_kodu, adres_id, fason_islem_id, urun_aciklama, miktar, giris_not)
values(:@fis_no,:@giris_tarih,:@giris_saat, :@hesap_kodu,:@adres_id,:@fason_islem_id,:@urun_aciklama,:@miktar,:@giris_not)
bu değişkenlere ve ri aktararak kayıt yapıyorum
buarad kullanıcı adres bilgisi yapmayınca kayıtı bu sorgu ile görüntüleyemiyorum
sizin function biraz karışık geldi bana doğrusu
yardımlarınız için teşekkür ederim
dbo.bme_hesaplar.vergi_dairesi AS EXPR6, dbo.bme_hesaplar.vergi_no AS EXPR7, dbo.bme_hesaplar.alicimi AS EXPR8,
dbo.bme_hesaplar.aktifmi AS EXPR9, dbo.bme_fason_islemler.fason_islem_id AS EXPR10, dbo.bme_fason_islemler.fason_islem_kodu AS EXPR11,
dbo.bme_fason_islemler.fason_islem_unvan AS EXPR12, dbo.bme_fason_islemler.fason_islem_aciklama AS EXPR13,
dbo.bme_fason_islemler.fason_islem_default_fiyat AS EXPR14, dbo.bme_fason_giris.giris_saat AS EXPR15,
dbo.bme_fason_giris.faturalandimi AS EXPR16, dbo.bme_fason_giris.giris_not AS EXPR17, dbo.bme_fason_giris.miktar AS EXPR18,
dbo.bme_fason_giris.urun_aciklama AS EXPR19, dbo.bme_fason_giris.fason_islem_id AS EXPR1, dbo.bme_fason_giris.adres_id AS EXPR20,
dbo.bme_fason_giris.hesap_kodu AS EXPR2, dbo.bme_fason_giris.giris_tarih AS EXPR21, dbo.bme_fason_giris.fis_no AS EXPR22,
dbo.bme_fason_giris.giris_id AS EXPR23, dbo.bme_fason_giris.*, dbo.bme_adresler.il_id AS EXPR24, dbo.bme_adresler.hesap_kodu AS EXPR25,
dbo.bme_adresler.adres AS EXPR26, dbo.bme_adresler.adres_yetkili AS EXPR27, dbo.bme_adresler.adres_etiket_id AS EXPR28,
dbo.bme_adresler.adres_id AS EXPR29, dbo.bme_adresler.*, dbo.private_adres_etiket.adres_etiket AS EXPR30,
dbo.private_adres_etiket.adres_etiket_id AS EXPR31, dbo.private_adres_etiket.*
FROM dbo.bme_adresler INNER JOIN
dbo.private_adres_etiket ON dbo.bme_adresler.adres_etiket_id = dbo.private_adres_etiket.adres_etiket_id INNER JOIN
dbo.bme_hesaplar ON dbo.bme_adresler.hesap_kodu = dbo.bme_hesaplar.hesap_kodu INNER JOIN
dbo.bme_fason_giris ON dbo.bme_adresler.adres_id = dbo.bme_fason_giris.adres_id INNER JOIN
dbo.bme_fason_islemler ON dbo.bme_fason_giris.fason_islem_id = dbo.bme_fason_islemler.fason_islem_id
WHERE (dbo.bme_hesaplar.hesap_kodu = '34A5')
şaban ustam bakın ben bu sorgudan
aşağıdaki bilgileri çekiyorum
hesap_kodu
hesap_unvan
fiş no
tarih
saat
adres_etiket
adres_yetkili
fason islem kodu
fason işlem adi
ürün açıklama
miktar
giriş not
faturalandimi 1 / 0 evet / hayır
kayıtlar arka planda id ler üzerinden dönüyor(giriş id si üzerinden takip ediyorum ama kayıt bu fieldlarla anlaçılır oluyor)
ben burada adocommand ile
kaydı şöyle yapıyorum
insert into bme_fason_giris (fis_no, giris_tarih, giris_saat, hesap_kodu, adres_id, fason_islem_id, urun_aciklama, miktar, giris_not)
values(:@fis_no,:@giris_tarih,:@giris_saat, :@hesap_kodu,:@adres_id,:@fason_islem_id,:@urun_aciklama,:@miktar,:@giris_not)
bu değişkenlere ve ri aktararak kayıt yapıyorum
buarad kullanıcı adres bilgisi yapmayınca kayıtı bu sorgu ile görüntüleyemiyorum
sizin function biraz karışık geldi bana doğrusu
yardımlarınız için teşekkür ederim
Zulmü alkışlayamam, zalimi asla sevemem;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Tek bir sorgu ile ortalığı karıştırmak yerine bir kaç sorgu ile sql değişkenlerine değer atasan daha sağlıklı ve kolay olmaz mı? Sanırım bu yöntemi değiştirmek zorundasın. Çünkü şartların join şartı where değil. Benim aklıma yatan, farklı bir kaç sorgu ile değişkenleri çekmendir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 21
- Kayıt: 02 Oca 2008 07:46
- Konum: istanbul