Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > Diğer Yazılımlar > Logo SQL
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Logo SQL LOGO SQL hakkında sorularınızı buraya sorabilirsiniz.

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 15-01-2018, 22:20   #1
Vedat Özer
Uzman
 
Vedat Özer kullanıcısının avatarı
 
Giriş: 04/01/2010
Şehir: Antalya
Mesaj: 2,053
Excel Vers. ve Dili:
OFFICE 2007 PRO TR - Win7 X64
Varsayılan Stoklarda Yürüyen Bakiye

Selamlar,

Logo Muhasebe proğramında stok kartlarında yürüyen bakiye raporunu paylaşıyorum.

İ7 işlemci bilgisayarda 1.230.945 satırda 31 saniye'de işlemi bitiriyor.

Kullanılan kodlar;
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'STOK_YURUYEN') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[STOK_YURUYEN] 

GO

CREATE PROC STOK_YURUYEN 
(@FIRMA VARCHAR(4),@DONEM VARCHAR(3))
AS
EXEC ('
SET NOCOUNT ON
IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects O
WHERE O.xtype = ''U'' AND O.id = OBJECT_ID(N''tempdb..#GECICITABLO''))
BEGIN  
DROP TABLE #GECICITABLO
END


CREATE TABLE #GECICITABLO
(
[Stfıche_Referans] INT,
[Stlıne_Referans] INT,
[Fiş No] VARCHAR(100),
[Fiş Türü] VARCHAR(65),
[Belge No] VARCHAR(100),
[Stfıche Tarıh] SMALLDATETIME,
[Stlıne Tarıh] SMALLDATETIME,
[Ftıme] bigint,
[Stok Kodu] VARCHAR(250),
[Stok Adı] VARCHAR(250),
[Bırım] VARCHAR(15),
[Giriş Çıkış] VARCHAR(20),
[Miktar] DECIMAL(38,2),
[Kalan] DECIMAL(38,2),
[Tutar] DECIMAL(38,2)
) 

CREATE CLUSTERED INDEX IX_#GECICITABLO ON #GECICITABLO ([Stok Kodu], [Stlıne Tarıh], [Miktar])

INSERT INTO #GECICITABLO
([Stfıche_Referans],
[Stlıne_Referans],
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
[Ftıme],
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
[Kalan],
[Tutar])

SELECT 
VEDAT_OZER.[Stfıche_Referans] ,
VEDAT_OZER.[Stlıne_Referans] ,
VEDAT_OZER.[Fiş No],
VEDAT_OZER.[Fiş Türü],
VEDAT_OZER.[Belge No],
VEDAT_OZER.[Stfıche Tarıh],
VEDAT_OZER.[Stlıne Tarıh],
VEDAT_OZER.[Ftıme],
VEDAT_OZER.[Stok Kodu],
VEDAT_OZER.[Stok Adı],
VEDAT_OZER.[Bırım],
VEDAT_OZER.[Giriş Çıkış],
VEDAT_OZER.[Miktar],
VEDAT_OZER.Kalan,
VEDAT_OZER.[Tutar]

FROM (
SELECT
STFICHE.LOGICALREF [STFICHE_REFERANS],
STLINE.LOGICALREF [STLINE_REFERANS],
[Fiş No]=STFICHE.FICHENO,
[Fiş Türü]=CASE STFICHE.TRCODE	 
WHEN  1 then ''Satınalma İrsaliyesi''
WHEN  2 then ''Perakende Satış İade İrsaliyesi''
WHEN  3 then ''Toptan Satış İade İrsaliyesi''
WHEN  4 then ''Konsinye Çıkış İade İrsaliyesi''
WHEN  5 then ''Konsinye Giriş İrsaliyesi''
WHEN  6 then ''Satınalma İade İrsaliyesi''
WHEN  7 then ''Perakende Satış İrsaliyesi''
WHEN  8 then ''Toptan Satış İrsaliyesi''
WHEN  9 then ''Konsinye Çıkış İrsaliyesi''
WHEN  10 then ''Konsinye Giriş İade İrsaliyesi''
WHEN  11 then ''Fire Fişi''
WHEN  12 then ''Sarf Fişi''
WHEN  13 then ''Üretimden Giriş Fişi''
WHEN  14 then ''Devir Fişi''
WHEN  25 then ''Ambar Fişi''
WHEN  26 then ''Muhtahsil İrsaliyesi''
WHEN  50 then ''Sayım Fazlası Fişi''
WHEN  51 then ''Sayım Eksiği Fişi'' ELSE '''' END,
[Belge No]=STFICHE.DOCODE,
[Stfıche Tarıh]=STFICHE.DATE_,
[Stlıne Tarıh]=STLINE.DATE_,
[Ftıme]=STLINE.FTIME,
[Stok Kodu]=ITEMS.CODE,
[Stok Adı]=ITEMS.NAME,
[Bırım]=BIRIM.CODE,
[Giriş Çıkış]= CASE WHEN STLINE.IOCODE IN(1,2) THEN ''Giriş'' when STLINE.IOCODE IN(3,4) THEN ''Çıkış'' else '''' end,
[Miktar]=(CASE WHEN STLINE.IOCODE IN(1,2) THEN 1 ELSE -1 end) * STLINE.AMOUNT*(CASE WHEN ISNULL(UINFO2,0)=0 THEN 1 ELSE UINFO2 END)/(CASE WHEN ISNULL(UINFO1,0)=0 THEN 1 ELSE UINFO1 END),
null KALAN,
[Tutar]=(CASE WHEN STLINE.IOCODE IN(1,2) THEN 1 ELSE -1 end) * STLINE.VATMATRAH
FROM LG_'+@FIRMA+'_'+@DONEM+'_STFICHE STFICHE WITH (NOLOCK) 
LEFT OUTER JOIN LG_'+@FIRMA+'_01_STLINE STLINE WITH (NOLOCK) ON STFICHE.LOGICALREF=STLINE.STFICHEREF 
LEFT OUTER JOIN LG_'+@FIRMA+'_ITEMS ITEMS      WITH (NOLOCK) ON STLINE.STOCKREF =ITEMS.LOGICALREF 
LEFT OUTER JOIN LG_'+@FIRMA+'_UNITSETL BIRIM   WITH (NOLOCK) ON BIRIM.UNITSETREF= ITEMS.UNITSETREF AND BIRIM.MAINUNIT=1
WHERE 
STFICHE.CANCELLED=0 AND STLINE.CANCELLED=0
AND STLINE.LINETYPE=0
AND STLINE.IOCODE IN (1,2,3,4)


) VEDAT_OZER


DECLARE @STOK_KODU VARCHAR(150),
        @YURUYEN  DECIMAL(38,2),
        @SAYI     bigint
		
	
	;	
SELECT @SAYI = 1

;

WITH
CTE AS
(
 SELECT SAY = ROW_NUMBER() OVER (ORDER BY [Stok Kodu], [Stlıne Tarıh], [Miktar]),
[Stfıche_Referans] ,
[Stlıne_Referans] ,
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
[Ftıme],
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
Kalan,
[Tutar] FROM #GECICITABLO WITH(INDEX=IX_#GECICITABLO)


)
 UPDATE tgt
    SET @YURUYEN = Kalan = CASE 
                               WHEN tgt.SAY = @SAYI 
                               THEN CASE
                                    WHEN tgt.[Stok Kodu] = @STOK_KODU THEN tgt.Miktar + @YURUYEN
                                    ELSE tgt.Miktar
                                    END
                               ELSE 0  
                               END,
        @STOK_KODU = tgt.[Stok Kodu],
        @SAYI  = @SAYI + 1
   FROM CTE tgt 
   WITH (TABLOCKX) 
  OPTION (MAXDOP 1)              

SELECT
[Stfıche_Referans] ,
[Stlıne_Referans] ,
[Fiş No],
[Fiş Türü],
[Belge No],
[Stfıche Tarıh],
[Stlıne Tarıh],
RTRIM(CONVERT(char(20), ROUND([Ftıme] / 16777216, 2))) + '':'' + RTRIM(CONVERT(char(20), 
ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216)/ 65536, 2))) + '':'' + RTRIM(CONVERT(char(20),
ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216 - ROUND(([Ftıme] - ROUND([Ftıme] / 16777216, 2) * 16777216) / 65536, 2) * 65536) / 256, 2))) AS Saat,
[Stok Kodu],
[Stok Adı],
[Bırım],
[Giriş Çıkış],
[Miktar],
[Kalan],
[Tutar] FROM #GECICITABLO 
ORDER BY [Stok Kodu],[Stlıne Tarıh],[Saat]
;
')
Çalışma Şekli;

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
EXEC STOK_YURUYEN '006','01'
Eklenmiş Dosyalar
Dosya Türü: rar sorgu.rar (1.7 KB, 24 Görüntülenme)
__________________
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.

Forum Kuralları

vedatozer@outlook.com
Vedat Özer Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-01-2018, 15:22   #2
planlamaci
Altın Üye
 
Giriş: 15/04/2010
Şehir: adana
Mesaj: 100
Excel Vers. ve Dili:
2003
Varsayılan Yürüyen bakiyenin Cari hesap için olanı varmıdır.

Bu sorguyu wiev olarak nasıl kullanabilirim.


merhaba bu stoklarda ki Yürüyen bakiyenin Cari hesap için olanı varmıdır.

Bu mesaj en son " 26-01-2018 " tarihinde saat 15:37 itibariyle planlamaci tarafından düzenlenmiştir....
planlamaci Çevrimdışı   Alıntı Yaparak Cevapla
Eski 27-01-2018, 13:54   #3
Vedat Özer
Uzman
 
Vedat Özer kullanıcısının avatarı
 
Giriş: 04/01/2010
Şehir: Antalya
Mesaj: 2,053
Excel Vers. ve Dili:
OFFICE 2007 PRO TR - Win7 X64
Varsayılan

Selamlar,

Oluşturulan Proc Excel'den değişken vererek çağırabilirsiniz. Cari Hesaplarla yaptığım çalışmayı ekliyorum.
Eklenmiş Dosyalar
Dosya Türü: xlsm Cursor -Carilerde Yürüyen Bakiye_Protect.xlsm (92.1 KB, 24 Görüntülenme)
__________________
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.

Forum Kuralları

vedatozer@outlook.com
Vedat Özer Çevrimdışı   Alıntı Yaparak Cevapla
Eski 08-02-2018, 16:21   #4
planlamaci
Altın Üye
 
Giriş: 15/04/2010
Şehir: adana
Mesaj: 100
Excel Vers. ve Dili:
2003
Varsayılan Logo Cari Yürüyen bakiye Fatura detayı

Alıntı:
Vedat Özer tarafından gönderildi Mesajı Görüntüle
Selamlar,

Oluşturulan Proc Excel'den değişken vererek çağırabilirsiniz. Cari Hesaplarla yaptığım çalışmayı ekliyorum.
Merhaba bu dosyada fatura detayı ve işlem dövizi yok. dosyada düzenleme yapabilir miyiz şifre paylaşabilir misiniz.?
planlamaci Çevrimdışı   Alıntı Yaparak Cevapla
Eski 08-02-2018, 17:29   #5
Vedat Özer
Uzman
 
Vedat Özer kullanıcısının avatarı
 
Giriş: 04/01/2010
Şehir: Antalya
Mesaj: 2,053
Excel Vers. ve Dili:
OFFICE 2007 PRO TR - Win7 X64
Varsayılan

Selamlar,

Cari hesap ekstresinde yürüyen bakiye ile ilgili yapmış olduğum çözümü satır satır giderek paylaşıyorum. Excelden değişken verip çağırırsınız.


1.Veri Tabanında 'CARI_EKSTRE' kayıtlı Procedure varmı diye sorguluyoruz. Sayma işleminde 1 eşitse siliyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'CARI_EKSTRE') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[CARI_EKSTRE]

2. Veri tabanımızda oluşturacağımız Procedure parametre veriyoruz.

@FRM= Firma numarası
@DNM= Dönem numarası
@ILKTARIH= Cari Ekstre Başlangıç Tarihi
@SONTARIH= Cari Ekstre Bitiş Tarihi
@ILK= Sorgulama Yapacağımız İlk Cari
@SON= Sorgulama Yapacağımız Son Cari


Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
CREATE  PROC [dbo].[CARI_EKSTRE] 
(
@FRM VARCHAR(4)
,@DNM VARCHAR(4)
,@ILKTARIH VARCHAR(12)
,@SONTARIH VARCHAR(12)
,@ILK VARCHAR(65)
,@SON VARCHAR(65)  
)

Örnek Uygulama;


Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
EXEC [dbo].[CARI_EKSTRE] '117','01','01.05.2017','31.12.2017','120.001.0080','120.001.0080'

3. Değişkenlik verme

Logo'da Firma ve dönem değişebiliyo oluşturduğumuz Procedure bir kere oluşturup parametre vererek çağırma işinde

EXEC('') oluşturuyoruz.

4. Sorgumuz'da TRANSACTION kullanacam isteyen bu alanı kaldırabilir.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
EXEC('
SET NOCOUNT ON
BEGIN TRY 
BEGIN TRANSACTION

5. Sorgu için'de kullanacağımız parametreleri veriyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
DECLARE @DURUM Nvarchar (51)
DECLARE @CLINTREF INTEGER
DECLARE @CARI_KODU NVARCHAR(165)
DECLARE @CARI_ADI NVARCHAR(165)
DECLARE @BAKIYE FLOAT
DECLARE @TARIH datetime
DECLARE @FIS_TUR Nvarchar(165)
DECLARE @OZEL_KOD Nvarchar (165) 
DECLARE @BELGE Nvarchar(165)
DECLARE @ACIKLAMA Nvarchar(165)
DECLARE @BORC FLOAT
DECLARE @ALACAK FLOAT
DECLARE @EKLEME_TARIH datetime
DECLARE @EKLEYEN Nvarchar (65)
DECLARE @DEGISTIRME_TARIH datetime
DECLARE @DEGISTIREN Nvarchar (65)

6. Cari Hesap ekstresini oluşturup aktaracağımız sana tabloyu sorguluyoruz var ise siliyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects O
WHERE O.xtype = ''U'' AND O.id = OBJECT_ID(N''tempdb..#TMP''))
BEGIN  
DROP TABLE #TMP
END

7. Sanal tabloyu oluşturuyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
CREATE TABLE #TMP
(
[CLINTREF] [int] NULL ,
[CARI_KODU] [varchar] (165)  NULL ,
[CARI_ADI] [varchar] (165)  NULL ,
[TARIH] [datetime] NULL ,
[FIS_TUR] [varchar] (165)   NULL ,
[OZEL_KOD] [varchar] (165)  NULL ,
[BELGE] [varchar] (165) NULL ,
[ACIKLAMA] [varchar] (165)  NULL,
[BORC] [FLOAT] NULL  ,
[ALACAK] [FLOAT] NULL,
[BAKIYE] [FLOAT] NULL,
[DURUM] [varchar] (5)  NULL,
[EKLEME_TARIH] [datetime] NULL ,
[EKLEYEN] [varchar] (65)  NULL,
[DEGISTIRME_TARIH] [datetime] NULL ,
[DEGISTIREN] [varchar] (65)  NULL
         
)

8. Dış tarafta çalışacak Cursor tanımlıyoruz.


Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
DECLARE CARI_LISTE cursor for

9. Car Ekstre'de dönecek carileri listeliyoruz.


Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
SELECT DISTINCT CARI.LOGICALREF, CARI.CODE , CARI.DEFINITION_
FROM LG_' + @FRM + '_CLCARD CARI  WHERE CARI.LOGICALREF IN(SELECT CLIENTREF FROM LG_' + @FRM + '_' + @DNM + '_CLFLINE ) AND  CARI.CODE BETWEEN  '''+ @ILK +''' AND '''+ @SON +''' 
ORDER BY CARI.LOGICALREF,CARI.CODE,CARI.DEFINITION_


OPEN CARI_LISTE  FETCH NEXT FROM CARI_LISTE 
INTO @CLINTREF,@CARI_KODU,@CARI_ADI

WHILE @@fetch_status = 0

BEGIN

10. İç Tarafta çalışacak Cursor tanımlıyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
DECLARE CARI_DETAY cursor for

11. Hesap ekstresi için sorgumuzu hazırlıyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
SELECT 
CARI_KODU,
CARI_ADI,
TARIH,
FIS_TUR,
OZEL_KOD,
BELGE,
ACIKLAMA,
BORC,
ALACAK,EKLEME_TARIH,EKLEYEN,DEGISTIREN_TARIH,DEGISTIREN
FROM (
SELECT 
MAX(CLNTC.CODE) CARI_KODU,
MAX(CLNTC.DEFINITION_) CARI_ADI ,
NULL TARIH,
''-'' FIS_TUR,
''-'' OZEL_KOD,
''-'' BELGE,
''Devir Eden Bakiye'' ACIKLAMA,
ISNULL(sum(ROUND((1-CTRNS.SIGN)*AMOUNT,2)),0) BORC,
ISNULL(sum(ROUND(CTRNS.SIGN*AMOUNT,2)),0) ALACAK,null EKLEME_TARIH,''-'' EKLEYEN,null DEGISTIREN_TARIH,''-'' DEGISTIREN
FROM LG_' + @FRM + '_CLCARD CLNTC  LEFT OUTER JOIN 
LG_' + @FRM + '_' + @DNM + '_CLFLINE CTRNS  ON (CTRNS.CLIENTREF = CLNTC.LOGICALREF) 
WHERE  CTRNS.CANCELLED=0 AND CTRNS.PAIDINCASH=0 AND CLNTC.CODE=@CARI_KODU AND CTRNS.DATE_< CONVERT(DATETIME,''' + @ILKTARIH + ''',104)

UNION ALL
SELECT  
CLNTC.CODE CARI_KODU ,CLNTC.DEFINITION_ CARI_ADI ,
CONVERT(datetime, CTRNS.DATE_, 104)TARIH,
case WHEN CTRNS.TRCODE=1 THEN ''Nakit Tahsilat''
WHEN CTRNS.TRCODE=2 THEN ''Nakit Ödeme''
WHEN CTRNS.TRCODE=3 THEN ''Borç Dekontu''
WHEN CTRNS.TRCODE=4 THEN ''Alacak Dekontu''
WHEN CTRNS.TRCODE=5 THEN ''Virman İşlemi''
WHEN CTRNS.TRCODE=6 THEN ''Kur Farkı İşlemi''
WHEN CTRNS.TRCODE=12 THEN ''Özel İşlem''
WHEN CTRNS.TRCODE=14 THEN ''Açılış Fişi''
WHEN CTRNS.TRCODE=20 THEN ''Gelen Havaleler''
WHEN CTRNS.TRCODE=21 THEN ''Gönderilen Havaleler''
WHEN CTRNS.TRCODE=31 THEN ''Mal Alım Faturası''
WHEN CTRNS.TRCODE=32 THEN ''Perakende Satış İade Faturası''
WHEN CTRNS.TRCODE=33 THEN ''Toptan Satış İade Faturası''
WHEN CTRNS.TRCODE=34 THEN ''Alınan Hizmet Faturası''
WHEN CTRNS.TRCODE=35 THEN ''Alınan Proforma Faturası''
WHEN CTRNS.TRCODE=36 THEN ''Alım İade Faturası''
WHEN CTRNS.TRCODE=37 THEN ''Perakende Satış Faturası''
WHEN CTRNS.TRCODE=38 THEN ''Toptan Satış Faturası''
WHEN CTRNS.TRCODE=39 THEN ''Verilen Hizmet Faturası''
WHEN CTRNS.TRCODE=40 THEN ''Verilen Proforma Faturası''
WHEN CTRNS.TRCODE=41 THEN ''Verilen Vade Farkı Faturası''
WHEN CTRNS.TRCODE=42 THEN ''Alınan Vade Farkı Faturası''
WHEN CTRNS.TRCODE=43 THEN ''Alınan Fiyat Farkı Faturası''
WHEN CTRNS.TRCODE=44 THEN ''Verilen Fiyat Farkı Faturası''
WHEN CTRNS.TRCODE=45 THEN ''Verilen Serbest Meslek Makbuzu''
WHEN CTRNS.TRCODE=46 THEN ''Alınan Serbest Meslek Makbuzu''
WHEN CTRNS.TRCODE=56 THEN ''Müstahsil Makbuzu''
WHEN CTRNS.TRCODE=70 THEN ''Kredi Kartı Fişi''
WHEN CTRNS.TRCODE=71 THEN ''Kredi Kartı Fişi İade''
WHEN CTRNS.TRCODE=72 THEN ''Firma Kredi Kartı Fişi''
WHEN CTRNS.TRCODE=73 THEN ''Firma Kredi Kartı Fişi İade''
WHEN CTRNS.TRCODE=61 THEN ''Çek Girişi''
WHEN CTRNS.TRCODE=62 THEN ''Senet Girişi''
WHEN CTRNS.TRCODE=63 THEN ''Çek Çıkış Cari Hesaba''
WHEN CTRNS.TRCODE=64 THEN ''Senet Çıkış Cari Hesaba''
WHEN CTRNS.TRCODE=75 THEN ''Özel Dekont''
end as FIS_TUR,
CTRNS.DOCODE OZEL_KOD,
CTRNS.SPECODE AS BELGE,
CTRNS.LINEEXP AS ACIKLAMA,
ISNULL(ROUND((1-CTRNS.SIGN)*AMOUNT,2),0) AS BORC, 
ISNULL(ROUND(CTRNS.SIGN*AMOUNT,2),0) AS ALACAK,
CONVERT(DATETIME,CTRNS.CAPIBLOCK_CREADEDDATE,104) AS EKLEME_TARIH,
EKLEYEN.NAME EKLEYEN,
CONVERT(DATETIME,CTRNS.CAPIBLOCK_MODIFIEDDATE,104) AS DEGISTIREN_TARIH,
DEGISTIREN.NAME DEGISTIREN
FROM 
LG_' + @FRM + '_' + @DNM + '_CLFLINE CTRNS LEFT OUTER JOIN
LG_' + @FRM + '_CLCARD CLNTC  ON (CTRNS.CLIENTREF = CLNTC.LOGICALREF) 
LEFT OUTER JOIN L_CAPIUSER EKLEYEN ON  EKLEYEN.NR=CTRNS.CAPIBLOCK_CREATEDBY
LEFT OUTER JOIN L_CAPIUSER DEGISTIREN  ON  DEGISTIREN.NR=CTRNS.CAPIBLOCK_MODIFIEDBY
WHERE  CTRNS.CANCELLED=0 AND CTRNS.PAIDINCASH=0 AND CLNTC.CODE=@CARI_KODU AND CTRNS.DATE_ BETWEEN  CONVERT(DATETIME,''' + @ILKTARIH + ''',104) AND  CONVERT(DATETIME,''' + @SONTARIH + ''',104))VEDAT_OZER
ORDER BY VEDAT_OZER.CARI_KODU,VEDAT_OZER.TARIH
SET  @BAKIYE = 0

OPEN CARI_DETAY FETCH NEXT FROM CARI_DETAY
INTO 
@CARI_KODU,
@CARI_ADI,
@TARIH,
@FIS_TUR,
@OZEL_KOD,
@BELGE,
@ACIKLAMA,
@BORC,
@ALACAK,
@EKLEME_TARIH,
@EKLEYEN,
@DEGISTIRME_TARIH,
@DEGISTIREN
WHILE @@fetch_status = 0
BEGIN
12. Satır satır yürüyen bakiye oluşturuyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
SET  @BAKIYE =ROUND( @BAKIYE  + @BORC - @ALACAK ,2)
Borç ise "B" Alacak ise "A" 0 ise "-" yazma işlemini yapıyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
SET  @DURUM = CASE WHEN @BAKIYE>0 THEN ''(B)'' WHEN @BAKIYE<0 THEN ''(A)''  WHEN @BAKIYE=0 THEN ''(-)'' ELSE '''' END
13. Kayıtlarımızı sanal tablo'ya aktarıyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
INSERT INTO #TMP (
CLINTREF,
CARI_KODU,
CARI_ADI,
TARIH,
FIS_TUR,
OZEL_KOD,
BELGE,
ACIKLAMA,
BORC,
ALACAK,
BAKIYE,
DURUM,
EKLEME_TARIH,
EKLEYEN,
DEGISTIRME_TARIH,
DEGISTIREN)
VALUES(  
@CLINTREF,
@CARI_KODU,
@CARI_ADI,
@TARIH,
@FIS_TUR,
@OZEL_KOD,
@BELGE,
@ACIKLAMA,
@BORC,
@ALACAK,
@BAKIYE,
@DURUM,
@EKLEME_TARIH,
@EKLEYEN,
@DEGISTIRME_TARIH,
@DEGISTIREN)
14. Dış ve İç Cursor yenile kapat temizle

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
FETCH NEXT FROM CARI_DETAY
INTO 
@CARI_KODU,
@CARI_ADI,
@TARIH,
@FIS_TUR,
@OZEL_KOD,
@BELGE,
@ACIKLAMA,
@BORC,
@ALACAK,
@EKLEME_TARIH,
@EKLEYEN,
@DEGISTIRME_TARIH,
@DEGISTIREN

END
CLOSE CARI_DETAY
DEALLOCATE CARI_DETAY 

FETCH NEXT FROM CARI_LISTE
INTO 
@CLINTREF,
@CARI_KODU,
@CARI_ADI
END
CLOSE CARI_LISTE
DEALLOCATE CARI_LISTE

15. TRANSACTION kapatıyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
COMMIT TRAN  
PRINT(''Cari Hesap Ekstresini Başarıyla Tamamlanmıştır.'')
END TRY 
   
BEGIN CATCH 
IF @@TRANCOUNT > 0 
BEGIN 
ROLLBACK TRAN  
PRINT(''Cari Hesap Ekstresinde Hata Var. Lütfen Tekrar Deneyin !'')
END 
END CATCH

15. Sanal tabloyu düzenleyip listeliyoruz.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
SELECT 
CARI_KODU as [Carı Kodu],
CARI_ADI as [Carı Adı],
TARIH as [Tarih],
FIS_TUR as [Fiş Türü],
BELGE [Özel Kod],
OZEL_KOD [Belge No],
ACIKLAMA [Açıklama],
BORC [Borç],
ALACAK [Alacak],
BAKIYE [Bakiye],
DURUM [B-A],
EKLEME_TARIH [Ekleme Tarihi],
EKLEYEN [Ekleyen Kişi],
DEGISTIRME_TARIH [Değiştirme Tarihi],
DEGISTIREN as [Değiştiren Kişi]
FROM #TMP WHERE  CARI_KODU IS NOT NULL
ORDER BY CARI_KODU

')

Sorguları tek seferde ekliyorum.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'CARI_EKSTRE') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[CARI_EKSTRE] 

GO

CREATE  PROC [dbo].[CARI_EKSTRE] 
(
@FRM VARCHAR(4)
,@DNM VARCHAR(4)
,@ILKTARIH VARCHAR(12)
,@SONTARIH VARCHAR(12)
,@ILK VARCHAR(65)
,@SON VARCHAR(65)  
)
AS
EXEC('
SET NOCOUNT ON
BEGIN TRY 
BEGIN TRANSACTION 

DECLARE @DURUM Nvarchar (51)
DECLARE @CLINTREF INTEGER
DECLARE @CARI_KODU NVARCHAR(165)
DECLARE @CARI_ADI NVARCHAR(165)
DECLARE @BAKIYE FLOAT
DECLARE @TARIH datetime
DECLARE @FIS_TUR Nvarchar(165)
DECLARE @OZEL_KOD Nvarchar (165) 
DECLARE @BELGE Nvarchar(165)
DECLARE @ACIKLAMA Nvarchar(165)
DECLARE @BORC FLOAT
DECLARE @ALACAK FLOAT
DECLARE @EKLEME_TARIH datetime
DECLARE @EKLEYEN Nvarchar (65)
DECLARE @DEGISTIRME_TARIH datetime
DECLARE @DEGISTIREN Nvarchar (65)  


IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects O
WHERE O.xtype = ''U'' AND O.id = OBJECT_ID(N''tempdb..#TMP''))
BEGIN  
DROP TABLE #TMP
END

CREATE TABLE #TMP
(
[CLINTREF] [int] NULL ,
[CARI_KODU] [varchar] (165)  NULL ,
[CARI_ADI] [varchar] (165)  NULL ,
[TARIH] [datetime] NULL ,
[FIS_TUR] [varchar] (165)   NULL ,
[OZEL_KOD] [varchar] (165)  NULL ,
[BELGE] [varchar] (165) NULL ,
[ACIKLAMA] [varchar] (165)  NULL,
[BORC] [FLOAT] NULL  ,
[ALACAK] [FLOAT] NULL,
[BAKIYE] [FLOAT] NULL,
[DURUM] [varchar] (5)  NULL,
[EKLEME_TARIH] [datetime] NULL ,
[EKLEYEN] [varchar] (65)  NULL,
[DEGISTIRME_TARIH] [datetime] NULL ,
[DEGISTIREN] [varchar] (65)  NULL
          
)  



DECLARE CARI_LISTE cursor for

SELECT DISTINCT CARI.LOGICALREF, CARI.CODE , CARI.DEFINITION_
FROM LG_' + @FRM + '_CLCARD CARI  WHERE CARI.LOGICALREF IN(SELECT CLIENTREF FROM LG_' + @FRM + '_' + @DNM + '_CLFLINE ) AND  CARI.CODE BETWEEN  '''+ @ILK +''' AND '''+ @SON +''' 
ORDER BY CARI.LOGICALREF,CARI.CODE,CARI.DEFINITION_


OPEN CARI_LISTE  FETCH NEXT FROM CARI_LISTE 
INTO @CLINTREF,@CARI_KODU,@CARI_ADI

WHILE @@fetch_status = 0

BEGIN

DECLARE CARI_DETAY cursor for

SELECT 
CARI_KODU,
CARI_ADI,
TARIH,
FIS_TUR,
OZEL_KOD,
BELGE,
ACIKLAMA,
BORC,
ALACAK,EKLEME_TARIH,EKLEYEN,DEGISTIREN_TARIH,DEGISTIREN
FROM (
SELECT 
MAX(CLNTC.CODE) CARI_KODU,
MAX(CLNTC.DEFINITION_) CARI_ADI ,
NULL TARIH,
''-'' FIS_TUR,
''-'' OZEL_KOD,
''-'' BELGE,
''Devir Eden Bakiye'' ACIKLAMA,
ISNULL(sum(ROUND((1-CTRNS.SIGN)*AMOUNT,2)),0) BORC,
ISNULL(sum(ROUND(CTRNS.SIGN*AMOUNT,2)),0) ALACAK,null EKLEME_TARIH,''-'' EKLEYEN,null DEGISTIREN_TARIH,''-'' DEGISTIREN
FROM LG_' + @FRM + '_CLCARD CLNTC  LEFT OUTER JOIN 
LG_' + @FRM + '_' + @DNM + '_CLFLINE CTRNS  ON (CTRNS.CLIENTREF = CLNTC.LOGICALREF) 
WHERE  CTRNS.CANCELLED=0 AND CTRNS.PAIDINCASH=0 AND CLNTC.CODE=@CARI_KODU AND CTRNS.DATE_< CONVERT(DATETIME,''' + @ILKTARIH + ''',104)

UNION ALL
SELECT  
CLNTC.CODE CARI_KODU ,CLNTC.DEFINITION_ CARI_ADI ,
CONVERT(datetime, CTRNS.DATE_, 104)TARIH,
case WHEN CTRNS.TRCODE=1 THEN ''Nakit Tahsilat''
WHEN CTRNS.TRCODE=2 THEN ''Nakit Ödeme''
WHEN CTRNS.TRCODE=3 THEN ''Borç Dekontu''
WHEN CTRNS.TRCODE=4 THEN ''Alacak Dekontu''
WHEN CTRNS.TRCODE=5 THEN ''Virman İşlemi''
WHEN CTRNS.TRCODE=6 THEN ''Kur Farkı İşlemi''
WHEN CTRNS.TRCODE=12 THEN ''Özel İşlem''
WHEN CTRNS.TRCODE=14 THEN ''Açılış Fişi''
WHEN CTRNS.TRCODE=20 THEN ''Gelen Havaleler''
WHEN CTRNS.TRCODE=21 THEN ''Gönderilen Havaleler''
WHEN CTRNS.TRCODE=31 THEN ''Mal Alım Faturası''
WHEN CTRNS.TRCODE=32 THEN ''Perakende Satış İade Faturası''
WHEN CTRNS.TRCODE=33 THEN ''Toptan Satış İade Faturası''
WHEN CTRNS.TRCODE=34 THEN ''Alınan Hizmet Faturası''
WHEN CTRNS.TRCODE=35 THEN ''Alınan Proforma Faturası''
WHEN CTRNS.TRCODE=36 THEN ''Alım İade Faturası''
WHEN CTRNS.TRCODE=37 THEN ''Perakende Satış Faturası''
WHEN CTRNS.TRCODE=38 THEN ''Toptan Satış Faturası''
WHEN CTRNS.TRCODE=39 THEN ''Verilen Hizmet Faturası''
WHEN CTRNS.TRCODE=40 THEN ''Verilen Proforma Faturası''
WHEN CTRNS.TRCODE=41 THEN ''Verilen Vade Farkı Faturası''
WHEN CTRNS.TRCODE=42 THEN ''Alınan Vade Farkı Faturası''
WHEN CTRNS.TRCODE=43 THEN ''Alınan Fiyat Farkı Faturası''
WHEN CTRNS.TRCODE=44 THEN ''Verilen Fiyat Farkı Faturası''
WHEN CTRNS.TRCODE=45 THEN ''Verilen Serbest Meslek Makbuzu''
WHEN CTRNS.TRCODE=46 THEN ''Alınan Serbest Meslek Makbuzu''
WHEN CTRNS.TRCODE=56 THEN ''Müstahsil Makbuzu''
WHEN CTRNS.TRCODE=70 THEN ''Kredi Kartı Fişi''
WHEN CTRNS.TRCODE=71 THEN ''Kredi Kartı Fişi İade''
WHEN CTRNS.TRCODE=72 THEN ''Firma Kredi Kartı Fişi''
WHEN CTRNS.TRCODE=73 THEN ''Firma Kredi Kartı Fişi İade''
WHEN CTRNS.TRCODE=61 THEN ''Çek Girişi''
WHEN CTRNS.TRCODE=62 THEN ''Senet Girişi''
WHEN CTRNS.TRCODE=63 THEN ''Çek Çıkış Cari Hesaba''
WHEN CTRNS.TRCODE=64 THEN ''Senet Çıkış Cari Hesaba''
WHEN CTRNS.TRCODE=75 THEN ''Özel Dekont''
end as FIS_TUR,
CTRNS.DOCODE OZEL_KOD,
CTRNS.SPECODE AS BELGE,
CTRNS.LINEEXP AS ACIKLAMA,
ISNULL(ROUND((1-CTRNS.SIGN)*AMOUNT,2),0) AS BORC, 
ISNULL(ROUND(CTRNS.SIGN*AMOUNT,2),0) AS ALACAK,
CONVERT(DATETIME,CTRNS.CAPIBLOCK_CREADEDDATE,104) AS EKLEME_TARIH,
EKLEYEN.NAME EKLEYEN,
CONVERT(DATETIME,CTRNS.CAPIBLOCK_MODIFIEDDATE,104) AS DEGISTIREN_TARIH,
DEGISTIREN.NAME DEGISTIREN
FROM 
LG_' + @FRM + '_' + @DNM + '_CLFLINE CTRNS LEFT OUTER JOIN
LG_' + @FRM + '_CLCARD CLNTC  ON (CTRNS.CLIENTREF = CLNTC.LOGICALREF) 
LEFT OUTER JOIN L_CAPIUSER EKLEYEN ON  EKLEYEN.NR=CTRNS.CAPIBLOCK_CREATEDBY
LEFT OUTER JOIN L_CAPIUSER DEGISTIREN  ON  DEGISTIREN.NR=CTRNS.CAPIBLOCK_MODIFIEDBY
WHERE  CTRNS.CANCELLED=0 AND CTRNS.PAIDINCASH=0 AND CLNTC.CODE=@CARI_KODU AND CTRNS.DATE_ BETWEEN  CONVERT(DATETIME,''' + @ILKTARIH + ''',104) AND  CONVERT(DATETIME,''' + @SONTARIH + ''',104))VEDAT_OZER
ORDER BY VEDAT_OZER.CARI_KODU,VEDAT_OZER.TARIH


SET  @BAKIYE = 0

OPEN CARI_DETAY FETCH NEXT FROM CARI_DETAY
INTO 
@CARI_KODU,
@CARI_ADI,
@TARIH,
@FIS_TUR,
@OZEL_KOD,
@BELGE,
@ACIKLAMA,
@BORC,
@ALACAK,
@EKLEME_TARIH,
@EKLEYEN,
@DEGISTIRME_TARIH,
@DEGISTIREN

WHILE @@fetch_status = 0

BEGIN

SET  @BAKIYE =ROUND( @BAKIYE  + @BORC - @ALACAK ,2)
SET  @DURUM = CASE WHEN @BAKIYE>0 THEN ''(B)'' WHEN @BAKIYE<0 THEN ''(A)''  WHEN @BAKIYE=0 THEN ''(-)'' ELSE '''' END

  

INSERT INTO #TMP (
CLINTREF,
CARI_KODU,
CARI_ADI,
TARIH,
FIS_TUR,
OZEL_KOD,
BELGE,
ACIKLAMA,
BORC,
ALACAK,
BAKIYE,
DURUM,
EKLEME_TARIH,
EKLEYEN,
DEGISTIRME_TARIH,
DEGISTIREN)
VALUES(  
@CLINTREF,
@CARI_KODU,
@CARI_ADI,
@TARIH,
@FIS_TUR,
@OZEL_KOD,
@BELGE,
@ACIKLAMA,
@BORC,
@ALACAK,
@BAKIYE,
@DURUM,
@EKLEME_TARIH,
@EKLEYEN,
@DEGISTIRME_TARIH,
@DEGISTIREN)


FETCH NEXT FROM CARI_DETAY
INTO 
@CARI_KODU,
@CARI_ADI,
@TARIH,
@FIS_TUR,
@OZEL_KOD,
@BELGE,
@ACIKLAMA,
@BORC,
@ALACAK,
@EKLEME_TARIH,
@EKLEYEN,
@DEGISTIRME_TARIH,
@DEGISTIREN

END
CLOSE CARI_DETAY
DEALLOCATE CARI_DETAY 

FETCH NEXT FROM CARI_LISTE
INTO 
@CLINTREF,
@CARI_KODU,
@CARI_ADI
END
CLOSE CARI_LISTE
DEALLOCATE CARI_LISTE

COMMIT TRAN  
PRINT(''Cari Hesap Ekstresini Başarıyla Tamamlanmıştır.'')
END TRY 
   
BEGIN CATCH 
IF @@TRANCOUNT > 0 
BEGIN 
ROLLBACK TRAN  
PRINT(''Cari Hesap Ekstresinde Hata Var. Lütfen Tekrar Deneyin !'')
END 
END CATCH 


SELECT 
CARI_KODU as [Carı Kodu],
CARI_ADI as [Carı Adı],
TARIH as [Tarih],
FIS_TUR as [Fiş Türü],
BELGE [Özel Kod],
OZEL_KOD [Belge No],
ACIKLAMA [Açıklama],
BORC [Borç],
ALACAK [Alacak],
BAKIYE [Bakiye],
DURUM [B-A],
EKLEME_TARIH [Ekleme Tarihi],
EKLEYEN [Ekleyen Kişi],
DEGISTIRME_TARIH [Değiştirme Tarihi],
DEGISTIREN as [Değiştiren Kişi]
FROM #TMP WHERE  CARI_KODU IS NOT NULL
ORDER BY CARI_KODU

')
__________________
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.

Forum Kuralları

vedatozer@outlook.com
Vedat Özer Çevrimdışı   Alıntı Yaparak Cevapla
Eski 09-02-2018, 10:50   #6
planlamaci
Altın Üye
 
Giriş: 15/04/2010
Şehir: adana
Mesaj: 100
Excel Vers. ve Dili:
2003
Varsayılan Abi teşekkür ederim Beynim resmen yandı....

Kayış koptu bende Cevap için teşekkür ederim.
planlamaci Çevrimdışı   Alıntı Yaparak Cevapla
Eski 09-02-2018, 13:50   #7
Vedat Özer
Uzman
 
Vedat Özer kullanıcısının avatarı
 
Giriş: 04/01/2010
Şehir: Antalya
Mesaj: 2,053
Excel Vers. ve Dili:
OFFICE 2007 PRO TR - Win7 X64
Varsayılan

Selamlar,

Rica Ederim.
Fatura detayları için sorgunun değişmesi lazım.
__________________
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.

Forum Kuralları

vedatozer@outlook.com
Vedat Özer Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 18:05


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım -- Beylikdüzü mali müşavir - Beylikdüzü mali müşavir - Lingerie - Dyeing Machine - Karton Bardak- Karton Bardak- Çorlu Dil Konuşma Terapisti- Çorlu Dil Konuşma Terapisti- Çorlu Konuşma Terapisti- Çorlu Konuşma Terapisti- Çorlu Özel Eğitim- Site Yönetimi- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Çorlu- Çorlu Araç Takip- Çorlu Su Arıtma- Gebze Emlak- Rampa- Rotary- Çorlu İnternet Sitesi- Çorlu Sürücü Kursu- Çorlu Sürücü Kursu- Şişli Avukat- Edirne Serbest Muhasebeci- Çorlu Etüt- İstanbul Botanik- Çorlu Sigorta- Kağıt Bardak- Kağıt Bardak- Kaplan Tekstil- Çorlu Perde- Çorlu Perde- Çorlu Havuz- Çorlu Havuz- Makina- Danışmazlar- Çorlu Perde Yıkama- Çorlu Perde Yıkama- Okul Danışmanlık- Çorlu Ayakkabı- İzmit Sigorta- ADR'li taşıma kabı imalatı- Mekanik Tesisat- Çorlu Grafik Tasarım-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden