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.


Ö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)+""))