Merhaba;
Daha önce mssql de kullandığım bir update sorgusunu firebirde doğrudan çeviremedim.
MSSQL Query:
--------------------------------------
UPDATE HESAPKART SET HSK_DVZBORC=HSK_DVZBORC-T2.DVZTUTAR,
HSK_BORC=HSK_BORC-T2.YTLTUTAR FROM HESAPKART,
(SELECT HFB_HFA,HFB_HSK,SUM(HFB_TUTAR) AS DVZTUTAR,
SUM(HFB_TUTAR*HFB_DOVIZKURU) AS YTLTUTAR FROM HFISB
WHERE HFB_TUTAR>0 GROUP BY HFB_HFA,HFB_HSK)
AS T2 WHERE T2.HFB_HSK=HESAPKART.HSK_KOD AND T2.HFB_HFA=@FISNO
--------------------------------------
Yukarıdaki mssql ifadesi aşağıdaki şekilde firebirdde kullanıldığında
--------------------------------------
UPDATE HESAPKART SET HSK_DVZBORC=HSK_DVZBORC-T2.DVZTUTAR,
HSK_BORC=HSK_BORC-T2.YTLTUTAR FROM HESAPKART,
(SELECT HFB_HFA,HFB_HSK,SUM(HFB_TUTAR) AS DVZTUTAR,
SUM(HFB_TUTAR*HFB_DOVIZKURU) AS YTLTUTAR FROM HFISB
WHERE HFB_TUTAR>0 GROUP BY HFB_HFA,HFB_HSK)
AS T2 WHERE T2.HFB_HSK=HESAPKART.HSK_KOD AND T2.HFB_HFA=VFISNO
--------------------------------------
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 63, column 31.
FROM.
mesajı alınıyor.
---------------------------------------
Bazı dökümanlara baktım update sorgusunda from ifadesi kullanımını göremedim. Bu sebeple query aşağıdaki şekilde çevirdim.
---------------------------------------
FOR SELECT HSK_KOD,HSK_DVZBORC-T2.DVZTUTAR,
HSK_BORC-T2.YTLTUTAR FROM HESAPKART,
(SELECT HFB_HFA,HFB_HSK,SUM(HFB_TUTAR) AS DVZTUTAR,
SUM(HFB_TUTAR*HFB_DOVIZKURU) AS YTLTUTAR FROM HFISB
WHERE HFB_TUTAR>0 GROUP BY HFB_HFA,HFB_HSK)
AS T2 WHERE T2.HFB_HSK=HESAPKART.HSK_KOD AND T2.HFB_HFA=:VFISNO
into :GHSK_KOD,:GHSK_DVZBORC,:GHSK_BORC DO
BEGIN
UPDATE HESAPKART SET HSK_DVZBORC=:GHSK_DVZBORC,HSK_BORC=:GHSK_BORC
WHERE HSK_KOD=:GHSK_KOD;
END
--------------------------------------
Bu diğerine göre biraz daha uzun ve daha yavaş olacağını sanıyorum.
Nasıl yapılabilir acaba, yardım ederseniz sevinirim. Kolay gelsin