MS-SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MS-SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Merkez Bankası döviz kurlarını T-SQL ile çeken SQL scripti

--1- sql server ayarları
Use master
go
   sp_configure 'show advanced options' , 1
go
   Reconfigure with Override
go
   sp_configure 'Ole Automation Procedures' , 1
go
   Reconfigure with Override
Go
-- 2.Döviz Kurlarının Yazılacağı Tablo oluşturuluyor
   if not exists (select * from sys.tables where name = N'DOVIZKURLARI' and type = 'U')
   begin
       Create table DOVIZKURLARI (Tarih date,
                                  CrossOrder Smallint,
                                  Kod NVarchar(5),
                                  CurrencyCode NVarchar(5),
                                  UNIT  varchar(50),
                                  Isim varchar(100),
                                  CurrencyName varchar(100) ,
                                  ForexBuying float  ,
                                  ForexSelling float,
                                  BanknoteBuying float,
                                  BanknoteSelling float)
   end
   --3. Stored Procedure oluşturuluyor

   if exists (select * from sys.objects where type = 'P' AND name = 'UPR_GetDovizKurlari_MerkezBankasi')
        drop procedure UPR_GetDovizKurlari_MerkezBankasi
go
   Create proc [dbo].[UPR_GetDovizKurlari_MerkezBankasi]
            (@pYil Smallint, @pAy TinyInt, @pGun TinyInt)
   As
   begin
       Declare @url as varchar(8000)
       /*
         Set @url = 'https://www.tcmb.gov.tr/kurlar/today.xml'
         Set @url = 'https://www.tcmb.gov.tr/kurlar/201903/12032019.xml'
       */

       Declare @XmlYilAy NVarchar(6), @XmlTarih NVarchar(10)
       Set @XmlYilAy =  Right('0000' + cast(@pYil as varchar(4)) , 4) + Right('00' + cast(@pAy as varchar(2)) , 2)
       Set @XmlTarih =  Right('00' + cast(@pGun as varchar(2)) , 2) + Right('00' + cast(@pAy as varchar(2)) , 2) + Right('0000' + cast(@pYil as varchar(4)) , 4)

       If DateFromParts(@pYil, @pAy, @pGun) = DateAdd(dd,0,DateDiff(dd,0,GetDate())) --gelen parametrelergünün tarihi ise
           Set @url =  'https://www.tcmb.gov.tr/kurlar/today.xml'
       else
           Set @url =  'https://www.tcmb.gov.tr/kurlar/' + @XmlYilAy + '/' + @XmlTarih + '.xml'
       Print @url

       declare @OBJ AS INT
       declare @RESULT AS INT
       EXEC @RESULT = SP_OACREATE 'MSXML2.XMLHTTP', @OBJ OUT
       EXEC @RESULT = SP_OAMethod @OBJ , 'open' , null , 'GET', @url, false
       EXEC @RESULT = SP_OAMethod @OBJ, send, NULL,''
       
        If OBJECT_ID('tempdb..#XML') IS NOT Null DROP TABLE #XML

       Create table #XML ( STRXML varchar(max))
       Insert INTO #XML(STRXML) EXEC @RESULT = SP_OAGetProperty @OBJ, 'responseXML.xml'
       
       --Select * From #XML

       DECLARE @XML AS XML
       SELECT @XML = STRXML FROM #XML
       DROP TABLE #XML
       DECLARE @HDOC AS INT
       EXEC SP_XML_PREPAREDOCUMENT @HDOC OUTPUT , @XML
       
       Delete from DOVIZKURLARI where tarih = DateFromParts(@pYil, @pAy, @pGun)
       INSERT INTO DOVIZKURLARI ( Tarih,CrossOrder,Kod,CurrencyCode,UNIT,Isim,CurrencyName,ForexBuying,ForexSelling,BanknoteBuying,BanknoteSelling)
 
       SELECT DateFromParts(@pYil, @pAy, @pGun) As Tarih,
              * FROM OPENXML(@HDOC, 'Tarih_Date/Currency')
                       With (CrossOrder NVarchar(5), Kod Varchar(5),  CurrencyCode NVarchar(5),
                             Unit varchar(50) 'Unit',
                             Isim varchar(100)   'Isim',
                             CurrencyName varchar(100)   'CurrencyName',
                             ForexBuying float   'ForexBuying',
                             ForexSelling float 'ForexSelling',
                             BanknoteBuying float 'BanknoteBuying',
                             BanknoteSelling float 'BanknoteSelling'
                           )
   End
Go
 ---2020,12,15 test amaçlı bir günlük YIL,AY,GÜN
exec UPR_GetDovizKurlari_MerkezBankasi 2020,12,15 --test amaçlı bir günlük

--4. iki tarih arası indir: Geçmiş döneme ait kurları indirebilmek için iki tarih arası sorguyu kullanabilirsiniz.
declare @IlkTarih datetime = '20150101'
declare @SonTarih datetime = '20201218'
declare @Yil int   
declare @Ay int  
declare @Gun int  

WHILE (@IlkTarih<@SonTarih)
BEGIN
    set @Yil =  year(@IlkTarih)
set @Ay =  month(@IlkTarih)
set @Gun =  day(@IlkTarih)
exec UPR_GetDovizKurlari_MerkezBankasi @Yil,@Ay,@Gun
SET @IlkTarih = DATEADD(dd,1,@IlkTarih)
END

Logo Tiger Ticari Sistem Üretim Emirleri Sorgusu

Ticari sistem üzerinden üretim emirleri listesini çekmek için aşağıdaki sorguyu kullanabilirsiniz.



CREATE VIEW [dbo].[Uretim_Emirleri_Listesi]
as
SELECT P.DATE_ AS 'Uretim Emri Tarihi',P.FICHENO as 'Uretim Emri No',P.SPECODE AS 'Uretim Emri Turu'
,(CASE P.STATUS WHEN 0 THEN 'Baslamadı' WHEN 1 THEN 'Devam Ediyor' WHEN '3' THEN 'Kapandı' END) AS 'Uretim Emri Durumu'
,I.CODE as 'Malzeme Kodu',I.PRODUCERCODE as 'Eski Kod',I.NAME as 'Malzeme Adı'
,(CASE SUBSTRING(I.CODE,10,1) WHEN 'A' THEN P.PLNAMOUNT WHEN 'K'
             THEN P.PLNAMOUNT / (SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2)
                    END) AS 'Plan_Ur_Adt'
,(CASE SUBSTRING(I.CODE,10,1) WHEN 'K' THEN P.PLNAMOUNT WHEN 'A'
             THEN P.PLNAMOUNT * (SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2)
                    END) AS 'Plan_Ur_Kg'
,(CASE SUBSTRING(I.CODE,10,1) WHEN 'A' THEN (SELECT SUM(STL.AMOUNT) FROM LG_271_01_STLINE STL (NOLOCK) WHERE STL.PRODORDERREF = P.LOGICALREF AND STL.LPRODSTAT = 0 AND STL.TRCODE = 13) WHEN 'K'
             THEN (SELECT SUM(STL.AMOUNT) FROM LG_271_01_STLINE STL (NOLOCK) WHERE STL.PRODORDERREF = P.LOGICALREF AND STL.LPRODSTAT = 0 AND STL.TRCODE = 13) / (SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2)
                    END) AS 'Ger_Ur_Adt'
,(CASE SUBSTRING(I.CODE,10,1) WHEN 'K' THEN (SELECT SUM(STL.AMOUNT) FROM LG_271_01_STLINE STL (NOLOCK) WHERE STL.PRODORDERREF = P.LOGICALREF AND STL.LPRODSTAT = 0 AND STL.TRCODE = 13) WHEN 'A'
             THEN (SELECT SUM(STL.AMOUNT) FROM LG_271_01_STLINE STL (NOLOCK) WHERE STL.PRODORDERREF = P.LOGICALREF AND STL.LPRODSTAT = 0 AND STL.TRCODE = 13) * (SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2)
                    END) AS 'Ger_Ur_Kg'
,ISNULL(O.NAME,0) AS 'Operasyon Adı'
,(CASE D.LINESTATUS WHEN 1 THEN 'DEVAM EDIYOR' WHEN 3 THEN 'TAMAMLANDI' END) AS 'Operasyon Durumu'
,(CASE(SELECT T.TAMIR FROM TAMIR T (NOLOCK) WHERE T.LOGREF = P.LOGICALREF) WHEN 'TÇ' THEN 'Tamire Cıktı' WHEN 'TD' THEN 'Tamirden Döndü' END) AS 'Tamir Durumu'
,(CASE XT11.FIRMNR WHEN '271' THEN (SELECT ORF271.DATE_ FROM LG_271_01_ORFICHE ORF271 (NOLOCK) WHERE XT11.ORDFICHEREF = ORF271.LOGICALREF)
             WHEN '371' THEN  (SELECT ORF371.DATE_ FROM LG_371_01_ORFICHE ORF371 (NOLOCK) WHERE XT11.ORDFICHEREF = ORF371.LOGICALREF) END ) AS 'Siparis Tarihi'
,(CASE XT11.FIRMNR WHEN '271' THEN (SELECT ORF271.FICHENO FROM LG_271_01_ORFICHE ORF271 (NOLOCK) WHERE XT11.ORDFICHEREF = ORF271.LOGICALREF)
             WHEN '371' THEN  (SELECT ORF371.FICHENO FROM LG_371_01_ORFICHE ORF371 (NOLOCK) WHERE XT11.ORDFICHEREF = ORF371.LOGICALREF) END ) AS 'Siparis No'

,(CASE XT11.FIRMNR WHEN '271' THEN (SELECT C271.DEFINITION_ FROM LG_271_01_ORFICHE ORF271 (NOLOCK) , LG_271_CLCARD C271 (NOLOCK) WHERE ORF271.CLIENTREF = C271.LOGICALREF AND XT11.ORDFICHEREF = ORF271.LOGICALREF)
             WHEN '371' THEN  (SELECT C371.DEFINITION_ FROM LG_371_01_ORFICHE ORF371 (NOLOCK), LG_371_CLCARD C371 (NOLOCK) WHERE ORF371.CLIENTREF = C371.LOGICALREF AND XT11.ORDFICHEREF = ORF371.LOGICALREF) END ) AS 'Musteri Adı'



,(CASE XT11.FIRMNR WHEN '271' THEN
                    (CASE SUBSTRING(I.CODE,10,1) WHEN 'A' THEN (SELECT ORFL271.AMOUNT FROM LG_271_01_ORFLINE ORFL271 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL271.LOGICALREF)
                          WHEN 'K' THEN (SELECT ORFL271.AMOUNT FROM LG_271_01_ORFLINE ORFL271 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL271.LOGICALREF)
                    *(SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2) END)
             WHEN '371' THEN  (CASE SUBSTRING(I.CODE,10,1) WHEN 'A' THEN (SELECT ORFL371.AMOUNT FROM LG_371_01_ORFLINE ORFL371 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL371.LOGICALREF)
                          WHEN 'K' THEN (SELECT ORFL371.AMOUNT FROM LG_371_01_ORFLINE ORFL371 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL371.LOGICALREF)
                    *(SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2) END)END)  AS 'Siparis Miktarı_Adt'
,(CASE XT11.FIRMNR WHEN '271' THEN
                    (CASE SUBSTRING(I.CODE,10,1) WHEN 'K' THEN (SELECT ORFL271.AMOUNT FROM LG_271_01_ORFLINE ORFL271 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL271.LOGICALREF)
                          WHEN 'A' THEN (SELECT ORFL271.AMOUNT FROM LG_271_01_ORFLINE ORFL271 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL271.LOGICALREF)
                    /(SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2) END)
             WHEN '371' THEN  (CASE SUBSTRING(I.CODE,10,1) WHEN 'K' THEN (SELECT ORFL371.AMOUNT FROM LG_371_01_ORFLINE ORFL371 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL371.LOGICALREF)
                          WHEN 'A' THEN (SELECT ORFL371.AMOUNT FROM LG_371_01_ORFLINE ORFL371 (NOLOCK) WHERE XT11.ORFLINEREF = ORFL371.LOGICALREF)
                    /(SELECT CONVFACT2 FROM LG_271_ITMUNITA ITM (NOLOCK) WHERE I.LOGICALREF = ITM.ITEMREF AND ITM.LINENR= 2) END)END)  AS 'Siparis Miktarı_Kg'
,SA.Seviye6Kod,SA.Seviye6Ad,SA.Seviye5Kod,SA.Seviye5Ad,SA.Seviye4Kod,SA.Seviye4Ad,SA.Seviye3Kod,SA.Seviye3Ad,SA.Seviye2Kod,SA.Seviye2Ad            
             FROM LG_271_PRODORD P (NOLOCK) LEFT OUTER JOIN
ISEMRIDURUM ISD (NOLOCK) ON P.LOGICALREF = ISD.PRODORDREF LEFT OUTER JOIN
LG_271_DISPLINE D (NOLOCK) ON D.LOGICALREF = ISD.LOGREF LEFT OUTER JOIN
LG_271_OPERTION O (NOLOCK) ON D.OPERATIONREF = O.LOGICALREF INNER JOIN
                    LG_271_ITEMS I (NOLOCK) ON P.ITEMREF = I.LOGICALREF LEFT OUTER JOIN
                    LG_XT011001_271 XT11 (NOLOCK) ON P.LOGICALREF = XT11.PRODREF INNER JOIN
             SINIF_AGACI SA (NOLOCK) ON I.LOGICALREF = SA.LOGICALREF



Msg 15281, Level 16, State 1, Procedure sp_send_dbmail, Line 0

ERROR MESSAGE:
Msg 15281, Level 16, State 1, Procedure sp_send_dbmail, Line 0
SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', see "Surface Area Configuration" in SQL Server Books Online.


RESOLUTION:
We have to enable the Database Mail feature on the server. In the SQL Server Management Studio to use Transact SQL to enable Database Mail, execute the following statement.

use master
go
sp_configure ’show advanced options’,1
go
reconfigure with override
go
sp_configure ‘Database Mail XPs’,1
–go
–sp_configure ‘SQL Mail XPs’,0
go
reconfigure
go

Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install.
Configuration option 'Database Mail XPs' changed from 0 to 1. Run the RECONFIGURE statement to install.
Configuration option 'show advanced options' changed from 1 to 0. Run the RECONFIGURE statement to install.

8152 - String or binary data would be truncated.

Server: Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.

This error happen when I tried to insert a value too long in a varchar or nvarchar
column:

CREATE TABLE TableName_(id VARCHAR(2))
go

INSERT TableName_ VALUES ('Serkan')

Resolution:
1- Most programmers are lazy they prefer not to change code (and introduce bugs)
INSERT bla VALUES (LEFT('123',2))
2 - Here is one way to do it without changing code but by setting ANSI Warnings to off

SET ANSI_WARNINGS OFF
INSERT TableName_ VALUES ('Serkan')
SET ANSI_WARNINGS ON
--set it back on so code following this won't be messed up

Microsoft SQL Server Agent üzerindeki Job çalışmama sorunu (The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. [SQLSTATE 22007] (Error 242))

Microsoft SQL Server üzerinde çalışması gereken job'lardan birisi aşağıdaki hatayı vermeye başladı.

HATA: NT SERVICE\SQLSERVERAGENT. The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. [SQLSTATE 22007] (Error 242)  Cursor is not open. [SQLSTATE 42000] (Error 16917)  Cursor is not open. [SQLSTATE 42000] (Error 16917)  The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. [SQLSTATE 22007] (Error 242).  The step failed.


Job içinde çalışan Script: 

DECLARE @RC int

-- TODO: Set parameter values here.

EXECUTE @RC = [dbo].[SP_PDKSIstanbulGunlukGirisler]
GO

Yukarıdaki Script SQL Management Studio içinde sorunsuz çalışıyor, ancak job içinde çalışmıyordu. Bunun nedeni job'u çalıştıran user'ın "NT SERVICE\SQLSERVERAGENT özelliklerinden default language özelliğini "Turkish" olarak değiştirdikten sonra Job sorunsuz çalıştı. (job içindeki SP'nin 'SP_PDKSIstanbulGunlukGirisler' içinde tarih hesaplamaları TR ayarları olduğu için Türkçe, sizin örneğinizde tersi olabilir)




MS SQL 2014 üzerinde "The transaction log for database is full due to LOG_BACKUP" hatası ve çözümü

         Genellikle çoklu silme işlemlerinden kaynaklanan ve kapatılmayan transaction'ların LOG dosyasını büyütmesinden dolayı "The transaction log for is full due to LOG_BACKUP" hatasıyla karşılaşabilirsiniz. 

Bu hatadan dolayı ilgili database'de sadece okuma işlemi yapılır, yazma ve silme işlemleri yapılamaz, yani uygulamalarınız durabilir.

Aşağıdaki scriptleri Management Studio üzerinde çalıştırarak sorunu çözebilirsiniz.

ALTER DATABASE [databasename] SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE ([databasename_Log], 5)
GO
ALTER DATABASE [databasename] SET RECOVERY FULL
GO



Örnek Kod:
Database (MDF) dosyası 4 GB civarındayken, Log(LDF) dosyası 50 GB'a kadar çıkmıştı, aşağıdaki kodu çalıştırdığımda log dosyası 5 MB'a boyutuna indi, problem çözüldü.

ALTER DATABASE GINSOFT_NET_PROD SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE (GINSOFT_NET_PROD_Log, 5)
GO
ALTER DATABASE GINSOFT_NET_PROD SET RECOVERY FULL

GO



Logo Tiger: Zaman bilgisinin Logo veritabanına integer olarak aktarılması

Logo Tiger'da, zaman bilgisi bazı tablolarda integer alanlarda tutulmaktadır. Bu alanları doldurmak için aşağıdaki SQL fonksiyonunu kullanabilirsiniz. (Veya aynı kodu C# veya Delphi gibi yazılım tool'larında hazırlayabilirsiniz)


CREATE FUNCTION [dbo].[LG_TIMETOINT](@HH INT,@MM INT,@SS INT)
       RETURNS INT
AS
BEGIN
 DECLARE @TIME    INT
 SELECT @TIME   = (@HH*65536*256+@MM*65536+@SS*256)
 RETURN(@TIME)
END

Örnek Kod:

-- Örneğin saat 15:54:00 olduğunda sonuç integer olarak  255197184 gelir
select [dbo].[LG_TIMETOINT](15,54,00) as IntegerSaat


NULL DBPROCESS pointer encountered, Delphi ZeosLib ile SQL server bağlantı sorunu

Delphi’de kullanılan ZeosLib kütüphanesi ile MSSQL server veritabanına bağlanırken

“NULL DBPROCESS pointer encountered” 

hatası alırsanız sırasıyla;

1. SQL Server Configuration Manager

2. SQL Server Network Configuration


3.Protocols for sağ klik à Flags à Force Encription = No olmalı  

Microsoft OLE DB Provider for SQL Server : Cannot create a row of size 8100 which is greater than the allowable maximum of 8060. (80040E14)

Microsoft OLE DB Provider for SQL Server : Cannot create a row of size 8100 which is greater than the allowable maximum of 8060. (80040E14)

hatası SQL 2000 server'ın bir tablodaki satır kapasitesinin 8060 byte olmasından kaynaklanmaktadır. SQL Server üzerinde bulunan tabloların kolon uzunluklarını bulan sorgudan sonra gerekli düzenleme yapılabilir.

Sorgu:


SELECT OBJECT_NAME(syscolumns.[id]) AS [Table Name] ,

SUM(syscolumns.length) AS [Row Size]

FROM syscolumns

JOIN sysobjects ON syscolumns.[id] = sysobjects.[id]

WHERE sysobjects.xtype = 'U' and OBJECT_NAME(syscolumns.[id]) like '%999%'

GROUP BY OBJECT_NAME(syscolumns.[id])


Sonuç:
Table Name
Row Size
BKP_LG_999_MRPHEAD
10192
LG_999_MRPHEAD
10192
LG_999_WHLIST
10046
BKP_LG_999_WHLIST
10046
LG_999_CLCARD
7194
BKP_LG_999_CLCARD
7194
BKP_LG_999_TAXDECLLINE
4950
LG_999_TAXDECLLINE
4950
LG_999_DEFNFLDSCARDV
2974
BKP_LG_999_DEFNFLDSCARDV
2974
LG_999_09_DEFNFLDSTRANV
2974
LG_999_11_DEFNFLDSTRANV
2974
LG_999_12_DEFNFLDSTRANV
2974
LG_999_10_DEFNFLDSTRANV
2974
LG_999_13_DEFNFLDSTRANV
2974
BKP_LG_999_CAMPAIGN
2937
LG_999_CAMPAIGN
2937

Logo Bordro Plus Personel Listesi SQL scripti

Bordro Plus üzerinde aktif ve pasif durumdaki personellere ait bilgilerin listesini aşağıdaki sorguyu kullanarak alabilirsiniz.



SELECT
CASE WHEN LGMAIN.TYP = 1 THEN 'AKTİF ÇALIŞAN' ELSE 'PASİF' END AS PERSONELDURUMU ,
LGMAIN.LREF,
LGMAIN.CODE As SicilNo,
LGMAIN.NAME as Adi,
LGMAIN.SURNAME as Soyadi,
LGMAIN.GROUPINDATE as GrubaGirisTarihi,
LGMAIN.INDATE as IseGirisTarihi,
LGMAIN.FIRMNR as KurumNo,
LGMAIN.UNITNR as BirimNo,
L_CAPIUNIT.NAME AS BirimAdi,
ASSG.TITLE as Gorevi,
LGMAIN.PREFIX AS AkademikUnvani,
CASE LAW.SSKSTATUS
      WHEN  1 THEN '4/a Normal'
      WHEN  2 THEN '4/a Emekli'
      WHEN  3 THEN '4/a Çırak'
      WHEN  4 THEN '4/a Stajyer'
      WHEN  5 THEN '4/a Yabancı'
      WHEN  6 THEN '4/b Bağ-kur(çalışan)'
      WHEN  7 THEN '4/b Bağ-kur(emekli)'
      WHEN  8 THEN 'Diğer'
      else 'Tanımsız'
end  as SosyalGuvenlikStatusu,
ASSG.WAGE_WAGE as Ucreti,
Case ASSG.WAGE_CLCTYPE
     WHEN 1 THEN 'Net'
     WHEN 2 THEN 'Brüt'
     ELSE 'Tanımsız'
END AS HesaplamaSekli,
'' as SozlesmeSekli,
INF.DADDY as BabaAdi,
INF.BIRTHPLACE AS DogumYeri,
INF.BIRTHDATE as DogumTarihi,  
CASE INF.STATUS
   WHEN 1 THEN 'Evli'
   WHEN 2 THEN 'Bekar'
   else 'Tanımsız'
end as MedeniHali,
CASE LGMAIN.SEX
   WHEN 1 THEN 'Erkek'
   WHEN 2 THEN 'Kadın'
   ELSE 'Tanımsız'
END AS Cinsiyeti,
CASE LGMAIN.EDUCATION
   WHEN 1 THEN 'İlkokul' WHEN 2 THEN 'Ortaokul' WHEN 3 THEN 'Lise' WHEN 4 THEN 'Yüksek' WHEN 5 THEN 'Yüksek Lisans' WHEN 6 THEN 'Doktora' ELSE 'Tanımsız'
END AS OgretimDurumu,
FINI.IbanNo as IbanNo,
ISNULL (ADRES.EXP1,' ') + ISNULL (ADRES.EXP2,' ')  AS Adres,
ISNULL (GSMNO.EXP1,' ') + ISNULL (GSMNO.EXP2,' ') AS CepNo,
LGMAIN.OUTDATE as CikisTarihi,
LGMAIN.SPECODE as OzelKod,
 INF.IDTCNO as TcKimlikNo,
 '1' AS CalismaAlani
 FROM
LH_001_PERSON LGMAIN WITH(NOLOCK)
LEFT OUTER JOIN LH_001_ASSIGN ASSG WITH(NOLOCK) ON (LGMAIN.LREF  =  ASSG.PERREF) AND (ASSG.ENDDATE IS NULL)
LEFT OUTER JOIN LH_001_PERFIN FINI WITH(NOLOCK) ON (LGMAIN.LREF  =  FINI.PERREF)
LEFT OUTER JOIN LH_001_FAMILY FAM ON   LGMAIN.LREF =   FAM.PERREF  AND RELATION = 0
LEFT OUTER JOIN LH_001_PERIDINF  INF ON   INF.LREF =   FAM.IDREF
LEFT OUTER JOIN LH_001_LAWCHG LAW ON (LGMAIN.LREF  =  LAW.PERREF)
LEFT OUTER JOIN LH_001_CONTACT ADRES (nolock) ON INF.[LREF] = ADRES.CARDREF AND ADRES.TYP = 1
LEFT OUTER JOIN LH_001_CONTACT GSMNO (nolock) ON INF.[LREF] = GSMNO.CARDREF AND GSMNO.TYP = 3
LEFT OUTER JOIN [dbo].L_CAPIUNIT (nolock) on L_CAPIUNIT.FIRMNR = 2 AND LGMAIN.UNITNR = L_CAPIUNIT.NR

Sonuç :

Tiger/Unity Hareket Özel Kodu Kontrol ve create işlemi

Tiger veya Unity üzerinde yapılan her türlü fişin satırlarında (Satınalma Sipariş, İrsaliye, Fatura, Malzeme Hareketi vs) "Hareket Özel Kodu" alanı bulunur.

Entegre bir sistem kurduğunuzda birbirinden bağımsız kurgulanan "Hareket Özel Kodları"'nın aynı kayıtlardan oluşabilmesi için bir Stored Procedure (SP) hazırladım. Amaç, Malzeme Fişi satırında açılan hareket özel kodunun tüm girişlerde görülmesini sağlamak. Aşağıdaki SP'yi, SQL Server üzerinde bir JOB'a bağlarsanız Hareket özel kodlarını sürekli güncel tutabilirsiniz.


Stored Procedure Kodu: 

Tiger'da Cari Hesaba Muhasebe hesap kodunu otomatik olarak aktarmak

Tiger'da Cari Hesaba Muhasebe hesap kodunu otomatik olarak aktarmak için aşağıdaki SQL scriptini çalıştırabilirsiniz.



DECLARE @carilref INT
DECLARE @carimuhlref INT
DECLARE @muhlref INT
DECLARE @carikodu varchar(50)
DECLARE @definiti varchar(50)
DECLARE @muhasebekodu varchar(50)

DECLARE @carimuhlref2 INT
DECLARE @muhlref2 INT
DECLARE @lastCarimuhSeq INT

DECLARE @eksikkayitsayisi INT



DECLARE processes CURSOR FOR
SELECT CARI.LOGICALREF,CARI.CODE AS CARI_KODU,CARIMUH.LOGICALREF AS CARIMUH_LREF,MUH.CODE AS MUHASEBE_KODU FROM LG_107_CLCARD CARI WITH (NOLOCK)
LEFT OUTER JOIN LG_107_CRDACREF CARIMUH WITH (NOLOCK) ON CARIMUH.CARDREF=CARI.LOGICALREF AND CARIMUH.TRCODE = 5
LEFT OUTER JOIN LG_107_EMUHACC MUH WITH (NOLOCK) ON CARIMUH.ACCOUNTREF=MUH.LOGICALREF
WHERE (MUH.CODE<>CARI.CODE OR MUH.CODE IS NULL) and SUBSTRING(CARI.CODE,5,2) = '47' AND CARI.CARDTYPE<>22 and CARI.CODE NOT LIKE '25%' ORDER BY CARI.CODE

OPEN processes
FETCH NEXT FROM processes
INTO @carilref,@carikodu,@carimuhlref,@muhasebekodu
WHILE @@FETCH_STATUS = 0
BEGIN
--ilk olarak LG_107_CRDACREF tablosunda kayıt var mı kontrol edilecek. eğer varsa ve muhasebe kodu yok veya hatalıysa muhasebe tablosundan
--kayıt aktarılacak.
set @muhlref2 = 0

SELECT @muhlref2=LOGICALREF FROM LG_107_EMUHACC where CODE = @carikodu
if @muhlref2 = 0
begin
insert into #EksikKayitTableGintem (Firma,CariKodu) values (107,@carikodu)
end
else
begin
if @carimuhlref IS NOT NULL
begin

UPDATE [LG_107_CRDACREF]
SET
[TRCODE] = 5
,[ACCOUNTREF] = @muhlref2
WHERE [LOGICALREF] = @carimuhlref
print 'update' + cast(@carimuhlref as varchar(20))
end
ELSE
BEGIN
print 'insert' + cast(@carimuhlref as varchar(20))
SELECT @lastCarimuhSeq = LASTLREF from LG_107_CRDACREFSEQ where ID=1
UPDATE LG_107_CRDACREFSEQ SET LASTLREF = @lastCarimuhSeq + 1 WHERE ID=1
INSERT INTO [LG_107_CRDACREF]
([LOGICALREF],[TRCODE],[CARDREF],[TYP],[ACCOUNTREF],[CENTERREF],[SITEID],[RECSTATUS],[ORGLOGICREF],[PROJECTREF])
VALUES (@lastCarimuhSeq ,5 ,@carilref,1 ,@muhlref2 ,1 ,0,0,0 ,0)
END
end

--PRINT cast(@muhlref2 as varchar(20)) + '-' + @carikodu


FETCH NEXT FROM processes
INTO @carilref,@carikodu,@carimuhlref,@muhasebekodu
END
CLOSE processes
DEALLOCATE processes

BlackListIP control on Serenity platform (.NET Core)

 In the Serenity platform, if you want to block IPs that belong to people you do not want to come from outside in the .net core web project,...