sqlinfo

Cevapla
Btrmr
Mesajlar: 2
Kayıt: Sal Ara 26, 2023 6:38 pm
Lokasyon: Mari
Adınız: Batir
Soyadınız: Hocayev

sqlinfo

Mesaj gönderen Btrmr »

Merhaba!
Aşağıdaki konuyla ilgili yardımcı olabilir misiniz lütfen?
Logoda tanımlı alan formül sekmesine sql sorgusunu sqlinfo ile yazdırmak istiyorum. Ancak sorguyu formül satırına yazarak kaydettiğim zaman sql sorgunu tamamını almıyor.
sql sorgu:
SELECT SUM(STL.AMOUNT/ITM.SPECODE4)
FROM LG_001_01_STLINE STL
INNER JOIN LG_001_ITEMS ITM ON STL.STOCKREF = ITM.LOGICALREF
WHERE STL.INVOICEREF=91
sqlinfo :
_SQLINFO("SUM(STL.AMOUNT/ITM.SPECODE4)","LG_001_01_STLINE STL INNER JOIN LG_001_ITEMS ITM ON STL.STOCKREF =ITM.LOGICALREF","INVOICEREF='"+STR(R23.logicalRef)+"'")
Kullanıcı avatarı
Tarkan VURAL
Doğrulandı
Site Admin
Mesajlar: 66
Kayıt: Prş Haz 22, 2023 12:03 am
Lokasyon: İstanbul
Web Sitesi: http://www.tarkanvural.com.tr
Meslek: Yazılım ve Veri Tabanı Uzmanı
Adınız: Tarkan
Soyadınız: VURAL
İletişim:

Re: sqlinfo

Mesaj gönderen Tarkan VURAL »

Merhaba,
Bir dizi hata ile karşılaştım. Alternatif yöntemler de kullanabilirsiniz. Hepsini aşağıda anlatmaya çalışıyor olacağım.


Tanımlı alan belirli karakter sayısında kapasiteye sahip. Sorguyu bölerek 2 parça kullanmayı deneyin.

From başvurusu için bir değişken oluşturun : FRM

FRM( Metin )

Kod: Tümünü seç

"LG_001_01_STLINE STL INNER JOIN LG_001_ITEMS ITM ON STL.STOCKREF =ITM.LOGICALREF"
_SQLINFO

Kod: Tümünü seç

_SQLINFO("SUM(STL.AMOUNT/ITM.SPECODE4)",[FRM],"INVOICEREF='"+STR(R23.logicalRef)+"'")
Bu arada sayısal bir alanı metin alanına bölme işlemini mantık olarak yapamazsınız.

Kod: Tümünü seç

STL.AMOUNT/CAST(ITM.SPECODE4 AS FLOAT)
şekli daha mantıklı olabilir. Ancak bu da boş olan ya da metin ifadesi olan SPECODE4 için hata döndürür.

Tüm bunların yerine bir view oluşturup onu sorgulamanız daha anlamlı olacaktır. Aşağıda nasıl bir view oluşturmanız gerektiğini yazıyorum.

Kod: Tümünü seç

 
CREATE VIEW EVN_SPECODE4_MIKTAR AS 
 SELECT 
    INVOICEREF AS FATURAREF,
    SUM(MIKTAR2) AS MIKTAR2
FROM
    (
        SELECT 
            INVOICEREF,
            CASE 
                WHEN ISNUMERIC(ITM.SPECODE4) = 1 
                    AND TRY_CAST(ITM.SPECODE4 AS FLOAT) IS NOT NULL 
                    AND TRY_CAST(ITM.SPECODE4 AS FLOAT) != 0 
                THEN STL.AMOUNT / TRY_CAST(ITM.SPECODE4 AS FLOAT) 
                ELSE 0 
            END AS MIKTAR2
        FROM 
            LG_001_01_STLINE STL 
        INNER JOIN 
            LG_001_ITEMS ITM ON STL.STOCKREF = ITM.LOGICALREF
        WHERE 
            INVOICEREF > 0
    ) AS SubQuery
GROUP BY 
    INVOICEREF;


_SQLINFO

Kod: Tümünü seç

_SQLINFO("MIKTAR2","EVN_SPECODE4_MIKTAR","FATURAREF='"+STR(R23.logicalRef)+"'")
R23.logicalref değerinin fatura referansı olduğuna emin olamadım. Hangi rapor modeli için çalışma yapıyorsanız, STLINE için invoiceref değerinden, INVOICE için ise logicalref alanını almalısınız.

Bu kadar ayrıntı ile çözebilmenizi umuyorum. Dilerseniz EVN Yazılım Ltd. Şti. olarak ihtiyacınız olan konularda profesyonel Logo desteği de sunabilirim. Logo veritabanı mimarisi konusunda raporlama, query oluşturma, uyarlama, entegrasyon gibi konular benim işim. ;)

Kolay gelsin.
Konu Dışı
Logo Yazılım, Özel Yazılım, Entegrasyon işlemleri, Excel VBA kodlama, Raporlama, Eğitim.. gibi konulardaki destek ihtiyaçlarınız içinhelpdesk@evnyazilim.com.trile irtibata geçebilirsiniz.
Btrmr
Mesajlar: 2
Kayıt: Sal Ara 26, 2023 6:38 pm
Lokasyon: Mari
Adınız: Batir
Soyadınız: Hocayev

Re: sqlinfo

Mesaj gönderen Btrmr »

Tarkan bey merhabalar,
Yorumunuz ve önerileriniz için teşekkür ederim. Gerçekten konuyla ilgili önerileriniz işime yaradı.

Saygılar.
Cevapla