Delphi Can
SQL Kullanımı - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: SQL Kullanımı (/showthread.php?tid=3818)

Sayfalar: 1 2


SQL Kullanımı - OZCANK - 20-07-2019

Merhaba; Delphi7 içerisinde SQL kod kullanıyorum ve birkaç alanım var ve bunları ComboBox2 de items içerisine yazıyorum.

RAPOR_KODU5
ACIK1
ACIK2
ACIK3

şeklinde. Kullanıcı RAPOR_KODU5 seçtiği zaman;

'LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=TBLCASABIT.VERGI_NUMARASI AND '+#39+Edit3.Text+#39+'=''MERKEZ'' ' +

MERKEZ e eşitlemek istiyorum.
ComboBox2 nin OnClick olayına da;

Edit3.Text:='TBLCASABIT.'+ComboBox2.Text;
Edit3.Text de başına Tabloyu eklemek için böyle bir yöntem buldum.

Sorunum şu , 

'TBLCASABIT.RAPOR_KODU5'='MERKEZ' 


Tırnak içerisinde yazdığı için eşitleme yapmıyor.
Karışık oldu biliyorum ama Yardımcı olabilir misiniz? Başka bir yöntem le bu işi halledebilir miyim?


SQL Kullanımı - adelphiforumz - 20-07-2019

'LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=TBLCASABIT.VERGI_NUMARASI AND ' + Edit3.Text+ ' = ' + '''MERKEZ''' +
şeklinde denermisiniz


Cvp: SQL Kullanımı - OZCANK - 20-07-2019

(20-07-2019, Saat: 13:16)adelphiforumz Kardeşim çok teşekkür ederim oldu. Adlı Kullanıcıdan Alıntı: 'LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=TBLCASABIT.VERGI_NUMARASI AND ' + Edit3.Text+  ' = ' + '''MERKEZ'''  +
şeklinde denermisiniz



Cvp: SQL Kullanımı - cinarbil - 20-07-2019

İyi günler.
sadece bilgi amaçlı 
Delphi de bu amaçla QuotedStr() komutu var.

'LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=TBLCASABIT.VERGI_NUMARASI AND ' + Edit3.Text+  ' = ' + QuotedStr('MERKEZ')  +



Cvp: SQL Kullanımı - OZCANK - 26-07-2019

(20-07-2019, Saat: 15:53)cinarbil Adlı Kullanıcıdan Alıntı: İyi günler.
sadece bilgi amaçlı 
Delphi de bu amaçla QuotedStr() komutu var.

'LEFT OUTER JOIN TBLCASABIT MC ON MC.VERGI_NUMARASI=TBLCASABIT.VERGI_NUMARASI AND ' + Edit3.Text+  ' = ' + QuotedStr('MERKEZ')  +

Merhaba ; SQL Cümlesin de "TCKIMLIKNO" veya "VERGI_NUMARASI"  hangisi dolu ise ona göre rapor etmeli ama "VERGI_NUMARASI" filitre ediyor ,"TCKIMLIKNO" filitre etmiyor bütün tc kimlikleri döküyor nerde yanlışlık yaptım acaba rica etsem bir kontrol edebilir misiniz?

SELECT TBLCASABIT.CARI_ISIM, month(tarih) AS 'AY', Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS 'KDV_HARIC_TUTAR', Count(TBLFATUIRS.FATIRS_NO) AS 'FATURA_SAYISI',TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO
FROM TBLFATUIRS
INNER JOIN TBLCASABIT ON TBLCASABIT.CARI_KOD=TBLFATUIRS.CARI_KODU 
INNER JOIN TBLCASABITEK ON (TBLCASABIT.CARI_KOD=TBLCASABITEK.CARI_KOD) AND (TBLFATUIRS.CARI_KODU=TBLCASABITEK.CARI_KOD)
WHERE (TBLFATUIRS.FTIRSIP='1') AND (TBLCASABITEK.TCKIMLIKNO='11111111111') OR (TBLCASABIT.VERGI_NUMARASI='')
GROUP BY TBLCASABIT.CARI_ISIM ,month(tarih),TBLCASABIT.VERGI_DAIRESI,TBLCASABIT.VERGI_NUMARASI,TBLCASABITEK.TCKIMLIKNO
HAVING Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$1 AND month(tarih)='1'
ORDER BY month(tarih) ASC



Cvp: SQL Kullanımı - adelphiforumz - 26-07-2019

@OZCANK 
Parametreli kullanımı (Eğer parametrede değer gönderirsen gönderdiğin değerler gelir göndermezsen hepsi

Select  TBLCASABIT.CARI_ISIM, Month(tarih) As 'AY', Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) As 'KDV_HARIC_TUTAR', 
       Count(TBLFATUIRS.FATIRS_NO) As 'FATURA_SAYISI', TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO
 From  TBLFATUIRS
       Inner Join TBLCASABIT On TBLCASABIT.CARI_KOD     = TBLFATUIRS.CARI_KODU
       Inner Join TBLCASABITEK On (TBLCASABIT.CARI_KOD  = TBLCASABITEK.CARI_KOD) And (TBLFATUIRS.CARI_KODU = TBLCASABITEK.CARI_KOD)
Where  (TBLFATUIRS.FTIRSIP        = '1')

And (TBLCASABITEK.TCKIMLIKNO   = @TCNo Or @TCNo = '')

And (TBLCASABIT.VERGI_NUMARASI = @VDNo Or @VDNo = '')
Group By TBLCASABIT.CARI_ISIM, Month(tarih), TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO
Having  Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) >= $1
  And  Month(tarih)                                                             = '1'
Order By Month(tarih) Asc;


Parametresiz kullanımıda TC No yada VD No alanlarından dolu olanlar gelir

Select  TBLCASABIT.CARI_ISIM, Month(tarih) As 'AY', Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) As 'KDV_HARIC_TUTAR', 
       Count(TBLFATUIRS.FATIRS_NO) As 'FATURA_SAYISI', TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO
 From  TBLFATUIRS
       Inner Join TBLCASABIT On TBLCASABIT.CARI_KOD     = TBLFATUIRS.CARI_KODU
       Inner Join TBLCASABITEK On (TBLCASABIT.CARI_KOD  = TBLCASABITEK.CARI_KOD) And (TBLFATUIRS.CARI_KODU = TBLCASABITEK.CARI_KOD)
Where  (TBLFATUIRS.FTIRSIP        = '1')
   And ( (TBLCASABITEK.TCKIMLIKNO   <> '') Or  (TBLCASABIT.VERGI_NUMARASI <> '' ) )
Group By TBLCASABIT.CARI_ISIM, Month(tarih), TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO
Having  Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) >= $1
  And  Month(tarih)                                                             = '1'
Order By Month(tarih) Asc;




SQL Kullanımı - adelphiforumz - 26-07-2019

@hi_selamlar
Merhabalar,

SQL Server çok iyi bilmiyorum.
Merak ettiğim bir konu var. Kullandığınız SQL kod örneğinde
1
Having ...... ..... .... >= $1
$1 buradaki anlamı nedir? Yani $ simgesi ne işlem görüyor. Detay verebilirmisiniz rica etsem.

Benim bildiğim kadarı ile sybase syntax'ından kalma
rakamsal değerlerde kullanılır
örneğin
Select * from XTable From ID >$10
gibi


Cvp: SQL Kullanımı - OZCANK - 26-07-2019

Parametresiz de Eşitleme nasıl olacak? TC no dolu v.no boş ise yada tersi durum da .


Select  TBLCASABIT.CARI_ISIM, Month(tarih) As 'AY', Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) As 'KDV_HARIC_TUTAR', 

      Count(TBLFATUIRS.FATIRS_NO) As 'FATURA_SAYISI', TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO
From  TBLFATUIRS
      Inner Join TBLCASABIT On TBLCASABIT.CARI_KOD     = TBLFATUIRS.CARI_KODU
      Inner Join TBLCASABITEK On (TBLCASABIT.CARI_KOD  = TBLCASABITEK.CARI_KOD) And (TBLFATUIRS.CARI_KODU = TBLCASABITEK.CARI_KOD)
Where  (TBLFATUIRS.FTIRSIP        = '1')
  And ( (TBLCASABITEK.TCKIMLIKNO   <> '') Or  (TBLCASABIT.VERGI_NUMARASI <> '' ) )
Group By TBLCASABIT.CARI_ISIM, Month(tarih), TBLCASABIT.VERGI_DAIRESI, TBLCASABIT.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO
Having  Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) >= $1
 And  Month(tarih)                                                             = '1'
Order By Month(tarih) Asc;



Cvp: SQL Kullanımı - adelphiforumz - 26-07-2019

@OZCANK
Sorduğunuz soruda veya didyorsunuz bir parametre yada eşitlikten bahsedilmiyor
SQL Cümlesin de "TCKIMLIKNO" veya "VERGI_NUMARASI"  hangisi dolu ise ona göre rapor etmeli ....."

yani bende "TCKIMLIKNO" veya "VERGI_NUMARASI"  dolu olanları listeliyorum
Yapmak istediğiniz daha açıklayıcı ve net yazarsanız daha fazla yardımcı olmaya çalışırım/çalışırız

NOT: 
Zaten daha net yazmaya çalışırken verdiğim örneğe dikkat ederseniz kendinizde çözümü bulacağınıza inanıyorum


Cvp: SQL Kullanımı - OZCANK - 26-07-2019

(26-07-2019, Saat: 11:47)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK
Sorduğunuz soruda veya didyorsunuz bir parametre yada eşitlikten bahsedilmiyor
SQL Cümlesin de "TCKIMLIKNO" veya "VERGI_NUMARASI"  hangisi dolu ise ona göre rapor etmeli ....."

yani bende "TCKIMLIKNO" veya "VERGI_NUMARASI"  dolu olanları listeliyorum
Yapmak istediğiniz daha açıklayıcı ve net yazarsanız daha fazla yardımcı olmaya çalışırım/çalışırız

NOT: 
Zaten daha net yazmaya çalışırken verdiğim örneğe dikkat ederseniz kendinizde çözümü bulacağınıza inanıyorum

Cevaplarınız için teşekkür ederim. Yapmak istediğim şu aslında;

Delphi de Faturaları listeliyorum ve bu faturaları listelerken vergi no veya tc no ları kümüle ediyorum. Eğer kümüle edilen faturanın detayını isterse kullanıcı üzerinde sağ clik yapıp detay alıyor yani kümülesiz buda veride ki v.no veya tc no alanlarının hangisi dolu ise ona göre liste alıyor.

BaBsRapDetay.SQL.Text:='SELECT CS.CARI_ISIM, month(tarih) AS AY, Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T) AS KDV_HARIC_TUTAR, '+
                       'Count(TBLFATUIRS.FATIRS_NO) AS FATURA_SAYISI,CS.VERGI_DAIRESI,CS.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO ' +
                      'FROM TBLFATUIRS ' +
                      'INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=TBLFATUIRS.CARI_KODU ' +
                      'INNER JOIN TBLCASABITEK ON CS.CARI_KOD=TBLCASABITEK.CARI_KOD ' +
                      'WHERE (FTIRSIP=''1'') AND (CS.VERGI_NUMARASI='+#39+''+Edit2.Text+''+#39+') OR (TBLCASABITEK.TCKIMLIKNO='+#39+''+Edit4.Text+''+#39+') ' +
                      'GROUP BY CS.CARI_ISIM ,CS.CARI_KOD, month(tarih),CS.VERGI_NUMARASI, TBLCASABITEK.TCKIMLIKNO, TBLFATUIRS.FTIRSIP, CS.VERGI_DAIRESI ' +
                      'HAVING (Sum(TBLFATUIRS.BRUTTUTAR-SAT_ISKT-GEN_ISK1T-GEN_ISK2T-GEN_ISK3T)>=$1) AND MONTH(TARIH)='+#39+''+Edit1.Text+''+#39+' ' +
                      'ORDER BY month(tarih) ASC';
BaBsRapDetay.Open;
ShowMessage(BaBsRapDetay.SQL.Text);