(24-04-2021, Saat: 12:44)mrmarman Adlı Kullanıcıdan Alıntı: Bir soru daha, FROM takip eden köşeli parantez tektir diye değerlendiriyorum ( JOIN vs varsa söyleyin ) diğer yandan WHERE takip eden kondisyon tek mi yoksa AND, OR, CASE ile uzayan şekilde çok sayıda parametre olabiliyor mu ?
Bu neden önemli üreteceğiniz PROCEDURE tanımı aşağıdaki gibi olacaktır.
procedure ParseParams( const aSQLtext: String; var aFormat: String; var aFROM: String; aWHEREs: TStrings );
yazacağımız sorgu herhangi bir şekilde olabilir. yani bir günlük kasa sorgusuda olabilir, çok yönlü depo stok sorgusuda olabilir.
SELECT ST.STOKKODU, ST.MALINCINSI, SUM(HR.CIKAN) AS SATILAN, [FIRMANO](String)]TBLSTOKLAR_1.STOKKODU AS STOKKOD, [FIRMANO](String)]TBLSTOKLAR_1.MALINCINSI AS STOKADI
FROM [FIRMANO](String)]TBLSTOKLAR AS ST INNER JOIN
[FIRMANO](String)]TBLSTOKLAR AS [FIRMANO](String)]TBLSTOKLAR_1 ON ST.SERINO = [FIRMANO](String)]TBLSTOKLAR_1.IND RIGHT OUTER JOIN
[FIRMANO](String)][DONEMNO(String)]TBLSTOKHAREKETLERI AS HR ON ST.IND = HR.STOKNO LEFT OUTER JOIN
[FIRMANO](String)]TBLDEPOLAR AS DP ON DP.IND = HR.DEPO
WHERE (HR.IZAHAT IN (21, 22, 25, 88, 100, 101)) AND (HR.TARIH >= [ILK_TARIH(Date)) AND (HR.TARIH <= [Son_Tarih(Date)]) AND (DP.DEPOKODU = [DEPO_KODU(String)]) AND (HR.CIKAN <> 0)
GROUP BY ST.STOKKODU, ST.MALINCINSI, [FIRMANO](String)]TBLSTOKLAR_1.STOKKODU, [FIRMANO](String)]TBLSTOKLAR_1.MALINCINSI
ORDER BY SATILAN DESC
yukarıdaki sorguyu yazdığımızı düşünürsek
[] parantez değişkenlerimiz olacak ve bu text'i tarayıp köşeli parantez içindeki bilgilere göre parametre girişi yaptıracak bize.