Logo'da SQLINFO Kullanımı

Blog Image
08 Şubat 2025

Logo'da SQLINFO Kullanımı

_SQLINFO KULLANIMI

Logo Sqlinfo fonksiyonu kullanımı yeni başlayanlar için karmaşıktır. Peki bu Sqlinfo nedir? Sqlinfo ne için kullanılır? Logo Sqlinfo fonksiyonu, Logo raporlarında standart alanlar içerisinde olmayan bir bilgiyi veritabanı içerisinden çekmek için kullanılır. Rapor tasarımı yaparken Logo Sqlinfo fonksiyonu çok büyük öneme sahiptir.  Logo Rapor tasarımı için ilgili yazımı incelemek için tıklayın. Bu fonksiyon kimileri tarafından Logo sql info şeklinde yazılsa da aslında doğru kullanımı sqlinfo şeklindedir. Sqlinfo fonksiyonu ile bir rapora tanımlı alan getirebilirsiniz, Logo rapor üretici ile sıfırdan bir sorgu yazıp logo programı içerisine entegre edebilirsiniz. Logo Sqlinfo kullanımı sırasında temel olarak üç bölümden oluşur;

  1. Tablodaki kolon adı
  2. Tablo adı
  3. Sorgudaki koşul kısmı (where kolon adı = ”)

 

Rapor tasarımında en çok kullanılan fonksiyonlardan birisi olan _sqlinfo ile raporda yer alan standart alanlar yeterli olmuyorsa bu fonksiyon ile veritabanından istenilen bilgi rapora eklenebilir. Sqlinfo fonksiyonu üç adet bilgi ile çalışır; tırnak içerisinde ilk kısımda tablo kolonu, ikinci kısımda veri çekilecek tablo, üçüncü kısımda varsa koşul veya koşullar yazılır ve aralara virgül eklenir. Koşul kısmı genellikle satırdan gelen bilginin okunarak farklı tablodan referans çekilerek dinamik olarak getirilir.

Örnek Kullanım: _SQLINFO(“KOLON ADI”,”TABLO ADI”,”KOŞUL”)

Not: Sqlinfo ile dönen bilgi metin olduğundan koşul kısmında kullanılacak veri sayı ise str(), tarih ise datestr() kullanılarak metine çevrilmelidir.

Str(): Sayı olarak tanımlanmış alanı metin formatına çevirerek yazar.

Datestr(): Tarih olarak tanımlanmış alanı metin formatına çevirerek yazar.

Sqlinfo ile Tanımlı Alan Nasıl Eklenir ?

Program içerisinde bulunan “Cari Hesap Listesi” tasarımına, cari hesap kartlarına tanımlanan ödeme planı bilgisini getirecek sqlinfo fonksiyonunu yazalım.

  • Finans –> Cari Hesap Raporları –> Cari Hesap Listesi seçilerek rapor ekranı açılır.
  • Değiştirilmek istenen tasarım üzerinde sağ tuş –> değiştir diyerek içerisine girilir.
  • Kullanıcı rapor tasarımı:

     

  • Açılan form tasarımı penceresinin üst kısmındaki “Tanımlı Alanlar” butonuna tıklanır ve açılan pencerede sağ tuş –> ekle denir.
  • Tanımlı alan ekleme penceresindeki türü kısmı “Metin”, adı kısmı “Ödeme Planı” yazıldıktan sonra formülü kısmına tıklanır.
  •  

    Tanımlı alan ekleme:

    Formül kısmına aşağıdaki formül yazılır_SQLINFO(“DEFINITION_”,”LG_001_PAYPLANS”,”LOGICALREF='”+STR(R1.paymentRef)+”‘”)Ödeme planı açıklamaları PAYPLANS tablosunda tutulduğu için ve CLCARD tablosunun PAYMENTREF değeri, PAYPLANS tablosunun LOGICALREF değerine eşit olduğu için yukarıdaki kısımda buna uygun bir formül ürettik. 

  • Oluşturulan tanımlı alan tasarıma alan olarak, başlık ve satır şeklinde eklenir.

    tanımlı alan tasarıma ekleme

     

  • Rapor çalıştırılarak ilgili alanın raporun ekran tasarımına geldiği görülür.

 

Örnekler:

Satış fatura dökümü raporuna kdv oranı %18 olan satırların toplamını getiren tanımlı alanı yazınız.

Sql Sorgusu: SELECT SUM(VATAMNT) FROM LG_020_01_STLINE WHERE VAT=18 AND INVOICEREF= 47

Tanımlı Alan: _SQLINFO("SUM(VATAMNT)","LG_020_01_STLINE","VAT=18 AND INVOICEREF='"+STR(R1.logicalRef)+"'")

Malzeme fiş listesi raporuna stok kartındaki özel kod bilgisini getiren tanımlı alanı yazınız.

Sql Sorgusu: SELECT SPECODE FROM LG_020_ITEMS WHERE LOGICALREF= 20

Tanımlı Alan: _SQLINFO("CAPIBLOCK_CREADEDDATE","LG_020_CLCARD","LOGICALREF='"+STR(R1.logicalRef)+"'")

Cari hesap listesi raporuna cari hesap eklenme tarihini getiren tanımlı alanı yazınız.

Sql Sorgusu: SELECT CAPIBLOCK_CREADEDDATE FROM LG_020_CLCARD WHERE LOGICALREF= 4

Tanımlı Alan: _SQLINFO("CAPIBLOCK_CREADEDDATE","LG_020_CLCARD","LOGICALREF='"+STR(R1.logicalRef)+"'")

Not: Tanımlı alanın çok uzun olması durumunda bilgileri parçalayıp tek sqlinfo içerisinde birleştirmek gerekebilir.

Cari hesap ekstresine fatura ile ilişkili olan mahsup fişinin numarasını getiren tanımlı alanı yazınız.

Sql Sorgusu: SELECT E.FICHENO FROM LG_020_01_EMFICHE E WITH(NOLOCK) ,LG_020_01_INVOICE I WHERE I.ACCFICHEREF=E.LOGICALREF AND I.LOGICALREF= 12

Tanımlı Alan: _SQLINFO("E.FICHENO",[TABLO],"I.ACCFICHEREF=E.LOGICALREF AND I.LOGICALREF='"+STR(R5.logicalRef)+"'")

Tablo Adlı Alan: "LG_020_01_EMFICHE E,LG_020_01_INVOICE I"

Not: Sqlinfo fonksiyonundan dönen bilginin veri tipi her zaman metindir. Yapılan tanımlı alan matematiksel bir işleme sokulacaksa val() fonksiyonu kullanılarak veri tipi sayısal olarak çevrilebilir. Benzer senaryoda tarih veri tipine çevirebilmek için de date() fonksiyonu kullanılabilir.

Val(): Metin türünde yazılmış bir sayısal değeri sayı (integer) formatına çevirir.

Date(): Gün, ay ve yıl bilgisine göre değeri tarih formatına çevirir.

Örnek:

Cari hesap listesi raporunda cari hesap hareket miktarını sayı türünde getiren tanımlı alanı yazınız

Tanımlı Alan: VAL(_SQLINFO("COUNT(LOGICALREF)","LG_020_01_CLFLINE","CLIENTREF="+STR(R1.clientRef)+""))