• Merhaba Ziyaretçi,
    Bayrama Özel VIP Paket %50 İndirim Fırsatından yararlanın. (bir kere öde, ömür boyu kullan)

  • Sn. Ziyaretçi,
    PEAKUP E-Book & Makale & Videoları yayınlandı.

Yardım Mizan SQL sorgusu-üst hesaplı

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Aşağıdaki mizan-SQL kodunda aşağıdaki örnekteki gibi 3 farklı cariyi 120.01.157 yi üst hesap gibi algılayıp. Diğer iki carinin rakamlarının toplamını 120.01.157 carisine atıyor. bunu nasıl düzeltebiliriz. Sorgu olarak güzel bir sorgu. Üst hesapları getiriyor. Ancak böyle bir hata var. Yardımcı olursanız sevinirim. Buradaki arkadaşlara da faydası olacaktır. İyi çalışmalar.


HESAP_KODU

BORC

ALACAK

BAKIYE

120.01.157


113.573,88​



135.218,98​



-21.645,10​


120.01.1571


616,16​



0,00​



616,16​


120.01.1579


112.957,72​



135.218,98​



-22.261,26​



SQL:
SELECT * FROM
(SELECT H.SEVIYE,H.HESAP_KODU,HESAP_ADI,   
SUM(ISNULL(L.DEBIT,0)) AS [BORC],
SUM(ISNULL(L.CREDIT,0))AS [ALACAK],
SUM(CASE WHEN ISNULL(L.BAKIYE,0)>0 THEN ABS(ISNULL(L.BAKIYE,0)) ELSE 0 END) BORC_BAKIYE,
SUM(CASE WHEN ISNULL(L.BAKIYE,0)<0 THEN ABS(ISNULL(L.BAKIYE,0)) ELSE 0 END) ALACAK_BAKIYE,
SUM(ISNULL(L.BAKIYE,0)) 'BAKIYE',
SUM(ISNULL(K_BAKIYE,0)) 'KUM_BAKIYE'
FROM
(SELECT H.ACTIVE,H.CODE AS [HESAP_KODU],H.DEFINITION_ AS [HESAP_ADI],CASE LEN(CODE) WHEN 1 THEN -2 WHEN 2 THEN -1 ELSE
LEN(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(H.CODE,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9','')) END AS [SEVIYE]
FROM LG_030_EMUHACC H WITH(NOLOCK))H
LEFT OUTER JOIN
(SELECT L.ACCOUNTCODE,SUM(ROUND(L.DEBIT,6)) DEBIT,SUM(ROUND(L.CREDIT,6)) CREDIT,ROUND(SUM(ROUND(L.DEBIT,6)-ROUND(L.CREDIT,6)),6) BAKIYE,
((SELECT SUM(ROUND(DEBIT,6)) FROM LG_030_03_EMFLINE AS EMFLINE WHERE DATE_ BETWEEN '2019-01-01' AND '2019-07-31' AND ACCOUNTCODE=L.ACCOUNTCODE AND TRCODE IN (1,2,3,4,6,7)AND CANCELLED = 0 AND STATUS = 0 )-
(SELECT SUM(ROUND(CREDIT,6))FROM LG_030_03_EMFLINE AS EMFLINE WHERE DATE_ BETWEEN '2019-01-01' AND '2019-07-31' AND ACCOUNTCODE=L.ACCOUNTCODE AND TRCODE IN (1,2,3,4,6,7)AND CANCELLED = 0 AND STATUS = 0 )) K_BAKIYE
FROM
LG_030_03_EMFLINE L WHERE L.ACCOUNTCODE LIKE '%' AND L.DATE_ BETWEEN '2019-01-01' AND '2019-07-31'AND L.TRCODE IN (1,2,3,4,6,7)AND L.CANCELLED = 0 AND L.STATUS = 0
GROUP BY L.ACCOUNTCODE )L
ON H.HESAP_KODU=SUBSTRING(L.ACCOUNTCODE,1,LEN(H.HESAP_KODU))
GROUP BY H.ACTIVE,H.HESAP_KODU,H.HESAP_ADI,H.SEVIYE )TMP
WHERE (BORC>0 OR ALACAK>0) AND SEVIYE<=9
ORDER BY HESAP_KODU
 
Moderatör tarafında düzenlendi:

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
216
En iyi yanıt
2
Puanları
43
Yaş
29
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Merhaba,

Aşağıdaki sorguyu deneyebilir misiniz.

SQL:
SELECT * FROM
(SELECT
EMUH.CODE "Hesap Kodu",
EMUH.DEFINITION_ "Hesap Açıklaması",
EMUH.EXTNAME "2. Açıklama",
EMUH.SPECODE "Hesap Özel Kodu",
EMUH.CYPHCODE "Hesap Yetki Kodu",
EMUH.UNITS "Hesap Birimi",
EMUH.SUBACCOUNTS "Alt Hesap Sayısı",
EMUH.LEVEL_ "Hesap Seviyesi",
DEBIT2 BORC,
CREDIT2 ALACAK,
DEBIT2-CREDIT2 BAKIYE
FROM
LG_017_EMUHACC EMUH JOIN
(SELECT
GLACC.CODE CODE1,
SUM(GLSUM.DEBIT)AS DEBIT1,
SUM(GLSUM.CREDIT)AS CREDIT1
FROM
LG_017_EMUHACC GLACC LEFT OUTER JOIN   LV_017_01_EMUHTOT GLSUM  ON (GLACC.LOGICALREF  =  GLSUM.ACCOUNTREF)
WHERE
GLSUM.TOTTYPE=1
GROUP BY
GLACC.CODE
)TMP1  ON EMUH.CODE=TMP1.CODE1
JOIN
(SELECT
GLACC.CODE CODE2,
SUM(GLSUM.DEBIT)AS DEBIT2,
SUM(GLSUM.CREDIT)AS CREDIT2
FROM
LG_017_EMUHACC GLACC LEFT OUTER JOIN LV_017_01_EMUHTOT GLSUM  ON (GLACC.LOGICALREF  =  GLSUM.ACCOUNTREF)
WHERE
GLSUM.TOTTYPE=2
GROUP BY
GLACC.CODE
)TMP2
ON EMUH.CODE=TMP2.CODE2) AS TMP
ORDER BY [Hesap Kodu] ASC
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
İncorrect syntax near 'TMP2' hatası veriyor.
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Üstadım eline sağlık. bir yerde yanlışlık yapmışım. sorunu çözdüm. İyi çalışmalar. Bu kod da Ana hesaplar koyu renk olacak şekilde ayarlamak mümkün mü. Üst hesapları ayırmak için gerekli bence.
 
Son düzenleme:

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Vedat bey bu koda tarih aralığı koyabilir misiniz? Tarih aralığı olması gereken bir kriter. Geçici vergilerde ve kurumlar vergisinden tarih aralığı önemli
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
1567587503471.png


Bu sql sorgusunda mükerrer kayıt alıyor. baştan ilgili ayın bakiyelerini doğru getiriyor. Altına da kümülatif olarak topluyor ilgili hesapları. Nasıl çözebiliriz.
 

Ekli dosyalar

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
216
En iyi yanıt
2
Puanları
43
Yaş
29
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Merhaba,

Yukarıdaki sorguyu iki tarih arası yapabilmemiz için logonun kendi Vıew ile oynayıp çıkarabiliriz.
Excel dosyasını ben yapmadığım için içeriğini açıp incelemem lazım.
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
216
En iyi yanıt
2
Puanları
43
Yaş
29
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Merhaba,

Excel dosyasının içinde bulunan Range("A7:Z65536").ClearContents bu kod satırın önünde bulunan satırın önündeki tek tırnağı silip tekrar çalıştırın.
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Vedat Üstadım, oldu. Eline emeğine sağlık. Çok teşekkür ederim. Bu tablo diğer arkadaşlarında işine yarayacağını düşünüyorum.
İyi çalışmalar,
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Vedat Bey, Dijit ve işyeri neyi ifade ediyor. 20 veya 30 yapınca hesapları daraltıp genişletiyor.
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
216
En iyi yanıt
2
Puanları
43
Yaş
29
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Merhaba,

Kod içerisinde SUBSTRING(EML.ACCOUNTCODE, 0, " & dijit10 & ") bu yerde kullanılmış. Emflıne.ACCOUNTCODE , 0 ile sizin belirtmiş olduğunuz aralığa göre listeleme yapar.
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Vedat Bey, yukarıdaki excell dosyasında iptal olan fişleri dahil etmeyecek şekilde mizan alma imkanımız var mı? bu excell dosyasında yansıtma fişlerini iptal etsek de dahil ediyor. Buda gelir tablosu ve bilançonun yanlış olmasına neden olmaktadır. bu konuda yardım etme imkanınız var mı?
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
216
En iyi yanıt
2
Puanları
43
Yaş
29
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Exceli açıp Alt+F11 basıp VBA ekranı açılacaktır orada emfline olan kısma ekleyiniz
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
_EMFLINE.CANCELLED=0 EML

vedat bu şekilde yaptım ancak. iptal olan fişleri dikkate almıyor. Bu kodun neresinde yanlışlık var acaba?
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
216
En iyi yanıt
2
Puanları
43
Yaş
29
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Where kısmına yukarıdaki verdiğim kodu ekleyin. Kodu son bölümüne AND diyip emflıne takma adı ne ise ona göre değiştirip yazın
 

enverdersin

Yeni Üye
Katılım
8 Şub 2019
Mesajlar
104
En iyi yanıt
0
Puanları
18
Yaş
41
Konum
istanbul
Ad Soyad
ENVER DERSİN
Where kısmına yukarıdaki verdiğim kodu ekleyin. Kodu son bölümüne AND diyip emflıne takma adı ne ise ona göre değiştirip yazın
Vedat bey, çok güzel diyorsunuz da nereye ekleyeceğimi bilemiyorum :) Bu aşağıdaki koda ekleyebilir misiniz? Böyle daha doğru sonuç olacak gibi. Olursa bir dosya paylaşacağım inş.


Kod:
Dim Baglanti As New ADODB.Connection
    Dim KayitSeti As New ADODB.Recordset
    Dim Firma As String, SERVER As String, Database As String, Kullanıcı As String, Parola As String, DONEM As String, Tutar As String, TUTAR2 As String, Tutar1 As String, tarih1 As String, tarih2 As String

Sub bilanco()
    Firma = Format(Range("g1"), "000"):    SERVER = Range("L1").Value:    Database = Range("L2").Value:    Kullanıcı = Range("L3").Value:    Parola = Range("L4").Value
    Tutar = Range("I1").Value: Tutar1 = Range("I2").Value: tarih1 = Format(Range("G3").Value, "d.M.yyyy"):    tarih2 = Format(Range("G4").Value, "d.M.yyyy")
    TUTAR2 = Range("I3").Value: dijit10 = Range("I4").Value: DONEM = Format(Range("g2"), "00"):
    Range("A7:Z65536").ClearContents
 
Baglanti.Open "Provider=SQLOLEDB; Data Source=" & SERVER & "; Initial Catalog=" & Database & "; User ID=" & Kullanıcı & "; Password=" & Parola & ";"

S = S & "SELECT  EMC.CODE, EMC.DEFINITION_, "
S = S & " Sum (EML.DEBIT), Sum(EML.CREDIT), Sum(EML.DEBIT) - Sum(EML.CREDIT) "
S = S & " FROM   LG_" & Firma & "_" & DONEM & "_EMFLINE.CANCELLED=0, "
S = S & "              LG_" & Firma & "_EMUHACC EMC "
'S = S & " WHERE SUBSTRING(EML.ACCOUNTCODE, 0, " & dijit10 & ") = EMC.CODE"
S = S & " WHERE ((LEVEL_ = 0 And SUBSTRING(EML.ACCOUNTCODE, 1, 3) = EMC.CODE) Or (LEVEL_ = 1 And SUBSTRING(EML.ACCOUNTCODE, 1, 6) = EMC.CODE) Or (LEVEL_ = 2 And SUBSTRING(EML.ACCOUNTCODE, 1, 10) = EMC.CODE)) "
S = S & " AND  (EML.DATE_ BETWEEN '" & Convert(VARCHAR, (tarih1), 103) & "' AND '" & Convert(VARCHAR, (tarih2), 103) & "')  "
S = S & " AND EMC.CODE LIKE  '" & Tutar & "%'  AND EMC.DEFINITION_ LIKE  '" & Tutar1 & "%'"
S = S & " GROUP BY EMC.CODE, EMC.DEFINITION_"
S = S & " ORDER BY EMC.CODE"
KayitSeti.Open S, Baglanti
Cells(7, 1).CopyFromRecordset KayitSeti

'y = [A65536].End(xlUp).Row + 1
'Range("F" & y) = "TOPLAM"
'Range("G" & y) = WorksheetFunction.Sum(Range("G7:G" & y))
'Range("H" & y) = WorksheetFunction.Sum(Range("H7:H" & y))

KayitSeti.Close
Baglanti.Close
Set KayitSeti = Nothing
Set Baglanti = Nothing

End Sub
 
Üst Alt