Sayfayı Yazdır | Pencereyi Kapat

ERP Stok Bakiye View

Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: SQL
Forum Adı: SQL Veri Tabanı İşlemleri
Forum Tanımlaması: Table,View,Trigger,SELECT,UPDATE,INSERT...
URL: http://www.erpne.org/forum_posts.asp?TID=1969
Tarih: 23 Kasım 2024 Saat 04:35
Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com


Konu: ERP Stok Bakiye View
Mesajı Yazan: hyperia
Konu: ERP Stok Bakiye View
Mesaj Tarihi: 24 Şubat 2010 Saat 15:38
Merhaba,
Stok bakiylerini izleyebilmek için bir view yapmak istiyorum fakat basaramadim.
STOK_GCKOD a göre stok hareketi G ve C olanlari GIRISMIK ve CIKISMIK olarak Alias ediyorum fakat GIRISMIK-CIKISMIK AS BAKIYE dedigimde invalid column name hatasi veriyor, olmuyor.

Önerileriniz nelerdir?

Simdiden tesekkür ederim..



Cevaplar:
Mesajı Yazan: rifatgunduz
Mesaj Tarihi: 24 Şubat 2010 Saat 15:51

Selam,

Select sum(CASE STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK) FROM TBLSTHAR WHERE STOK_KODU='Stok1'
kodunu kullanabilirsiniz. Subeli veya depolu bir yapiniz varsa söylerseniz ona görede kod yazarim.

Iyi Çalismalar...


-------------
Rifat Gündüz



www.netsis.com.tr


Mesajı Yazan: hyperia
Mesaj Tarihi: 24 Şubat 2010 Saat 15:56
Çok tesekkür ederim fakat
Kodu view a yapistirdigimda incorrect syntax near ')'. diye bir hata çikiyor.


Mesajı Yazan: Conari
Mesaj Tarihi: 24 Şubat 2010 Saat 16:15
hazir view stokbakiyeotr yi kullanabilirsiniz.

-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: hyperia
Mesaj Tarihi: 24 Şubat 2010 Saat 16:18
Orjinalini yazan: Conari Conari Yazdı:

hazir view stokbakiyeotr yi kullanabilirsiniz.

Bu view i kullandigimda da bos sonuç çikiyor.
Hiç veri gelmiyor.


Mesajı Yazan: rifatgunduz
Mesaj Tarihi: 24 Şubat 2010 Saat 16:20
Selam,
Bu viewi dogru sonuç vermesi için Hareket Kontrol çalistirmaniz gerekir. O nedenle sql kodunu kullanmanizi öneririm.
Iyi Çalismalar...


-------------
Rifat Gündüz



www.netsis.com.tr


Mesajı Yazan: Conari
Mesaj Tarihi: 24 Şubat 2010 Saat 16:21
aralik maskede depo_kodu=0 veriyor otomatik siz istediginiz depoyu seçin.(program)
 
ayrica SQL den çalistirdiginizda Session olusturmadiginiz için bir sey göstermez.
 
exec nsp_netsesguncelle 2, 'ys0001',1,0,'e','h','2',-1,'H',0,0,'H'
 
ilk olarak bunu çalistirin.


-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: hyperia
Mesaj Tarihi: 24 Şubat 2010 Saat 16:22
Orjinalini yazan: rifatgunduz rifatgunduz Yazdı:

Selam,
Bu viewi dogru sonuç vermesi için Hareket Kontrol çalistirmaniz gerekir. O nedenle sql kodunu kullanmanizi öneririm.
Iyi Çalismalar...
Sql kodunda da incorrect syntax near ')'. hatasini veriyor Rifat bey. Acaba ben mi yanlis yapiyorum?


Mesajı Yazan: Conari
Mesaj Tarihi: 24 Şubat 2010 Saat 16:25
kapanis parantezinden önce End  ekleyin.

-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: hyperia
Mesaj Tarihi: 24 Şubat 2010 Saat 16:31
Orjinalini yazan: Conari Conari Yazdı:

kapanis parantezinden önce End  ekleyin.

Çok tesekkürler, çalisti. Peki bu kodu sadece belirledigimiz stok kodu olarak çagirmasakta tümü çeksek olur mu?
Tüm stok kodlari ve bakiyleri seklinde?


Mesajı Yazan: Conari
Mesaj Tarihi: 24 Şubat 2010 Saat 16:33
Select STOK_KODU ,
sum(CASE STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK) FROM TBLSTHAR
GROUP BY STOK_KODU

-------------
Netsisden vazgeçemiyorum. Beni engelliyor..


Mesajı Yazan: hyperia
Mesaj Tarihi: 24 Şubat 2010 Saat 16:35
Yardimlariniz için çok çok tesekkür ederim Conari ve rifatgündüz.. Çok sagolun.


Mesajı Yazan: hyperia
Mesaj Tarihi: 25 Şubat 2010 Saat 10:26
Birsey daha soracagim fakat biraz abartmis olabilirim.
Bu cümle ile 2 ayri DB den verileri çekip (STOK KOD ve ADLARI ayni)
Bakiyelerini toplatarak yazdirma imkanimiz var midir?


Mesajı Yazan: mummy_1499
Mesaj Tarihi: 25 Şubat 2010 Saat 18:25
CREATE VIEW STOKBAK1 AS
Select STOK_KODU ,
BAKIYE=sum(CASE STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK) FROM DB1.DBO.TBLSTHAR
GROUP BY STOK_KODU
UNION ALL
Select STOK_KODU ,
BAKIYE=sum(CASE STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK) FROM DB2.DBO.TBLSTHAR
GROUP BY STOK_KODU
 
SEKLINDE YAPARSANIZ DB1 VE DB2 DATABASELERINDE STOK BAKIYELERINI 2 AYRI SATIRDA GÖSTERECEKTIR. GCKOD A GÖRE SUM ISLEMI YAPTIGINIZ IÇIN TEK BIR VIEW IÇERSINDE TOPLATMANIZ SORUN YARATABILIR. FAKAT SU ÜSTTEKI VIEW 'I BASKA BIR VIEW IÇERISINDE ÇAGIRARAK TEK SATIR HALINE GELEBILIR.
 
CREATE VIEW STOKBAK2 AS
SELECT STOK_KODU,
STOK_ADI = DBO.TRK(SELECT STOK_ADI FROM TBLSTSABIT B WHERE A.STOK_KODU=B.STOK_KODU),
TOPLAM_BAKIYE= SUM(BAKIYE)
FROM STOKBAK1 A
GROUP BY STOK_KODU
 
STOKBAK2 VIEW I ÇALISTIGINDA ÖNCE BIRINCIYI ÇALISTIRACAK 2 SIRKETIN BAKIYELERINI AYRI AYRI HESAPLAYACAK SONRA IKINCI VIEW DE TEK SATIR YAPACAK.SON VIEW AYRICA ADINIDA EKLER.


-------------
MUHAMMET YILMAZ
0505 664 26 97
NETSİS PROJE UZMANI


Mesajı Yazan: mbaykan
Mesaj Tarihi: 25 Şubat 2010 Saat 22:02
SELECT STOK_KODU,STOK_ADI,SUM(BAKIYE1) BAKIYE1,SUM(BAKIYE2) BAKIYE2 FROM
(SELECT A.STOK_KODU,MAX(STOK_ADI) STOK_ADI,SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK END) BAKIYE1,0 AS BAKIYE2
FROM TBLSTHAR A,TBLSTSABIT B
WHERE A.STOK_KODU=B.STOK_KODU
GROUP BY A.STOK_KODU
UNION ALL
SELECT A.STOK_KODU,MAX(STOK_ADI) STOK_ADI,0 AS BAKIYE1, SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK END) BAKIYE2
FROM DB2..TBLSTHAR A,DB2..TBLSTSABIT B
WHERE A.STOK_KODU=B.STOK_KODU
GROUP BY A.STOK_KODU) AA
GROUP BY STOK_KODU,STOK_ADI


-------------
Mehmet Baykan


Mesajı Yazan: hyperia
Mesaj Tarihi: 26 Şubat 2010 Saat 08:24
Sevgili member_profile.asp?PF=2225&FID=33 - mummy_1499 ve member_profile.asp?PF=431&FID=33 - mbaykan   desteginiz için çok tesekkür ederim.
Mehmet bey in verdigi kodu direkt kullandim ve harika.. Iki sirketteki bakiyeler geldi.

Birde bu koda SUM(BAKIYE1 + BAKIYE2) AS BAKIYE3 ekleyip toplam bakiyeyi yazdirdim.
Elleriniz dert görmesin..


Birde buraya KOD_1 ve KOD_2 yi tanimlayama çalistim ama hata veriyor su kodda:

SELECT     STOK_KODU, STOK_ADI, SUM(BAKIYE1) AS BAKIYE1, SUM(BAKIYE2) AS BAKIYE2, SUM(BAKIYE1 + BAKIYE2) AS BAKIYE, KOD_2
FROM         (SELECT     B.KOD_2, A.STOK_KODU, MAX(B.STOK_ADI) AS STOK_ADI, SUM(CASE WHEN STHAR_GCKOD = 'G' THEN STHAR_GCMIK ELSE - STHAR_GCMIK END)
                                               AS BAKIYE1, 0 AS BAKIYE2
                       FROM          dbo.TBLSTHAR AS A INNER JOIN
                                              dbo.TBLSTSABIT AS B ON A.STOK_KODU = B.STOK_KODU
                       GROUP BY A.STOK_KODU
                       UNION ALL
                       SELECT    
B.KOD_2, A.STOK_KODU, MAX(B.STOK_ADI) AS STOK_ADI, 0 AS BAKIYE1,
                                             SUM(CASE WHEN STHAR_GCKOD = 'G' THEN STHAR_GCMIK ELSE - STHAR_GCMIK END) AS BAKIYE2
                       FROM         PROLINE2010.dbo.TBLSTHAR AS A INNER JOIN
                                             PROLINE2010.dbo.TBLSTSABIT AS B ON A.STOK_KODU = B.STOK_KODU
                       GROUP BY A.STOK_KODU) AS BAKIYELER
GROUP BY STOK_KODU, STOK_ADI,
KOD_2


Mesajı Yazan: mbaykan
Mesaj Tarihi: 27 Şubat 2010 Saat 09:58
SELECT     STOK_KODU, STOK_ADI, SUM(BAKIYE1) AS BAKIYE1, SUM(BAKIYE2) AS BAKIYE2, SUM(BAKIYE1 + BAKIYE2) AS BAKIYE, KOD_2
FROM        (SELECT     max(B.KOD_2) KOD_2, A.STOK_KODU, MAX(B.STOK_ADI) AS STOK_ADI, SUM(CASE WHEN STHAR_GCKOD = 'G' THEN STHAR_GCMIK ELSE - STHAR_GCMIK END)
                                               AS BAKIYE1, 0 AS BAKIYE2
                      FROM          dbo.TBLSTHAR AS A INNER JOIN
                                              dbo.TBLSTSABIT AS B ON A.STOK_KODU = B.STOK_KODU
                      GROUP BY A.STOK_KODU
                      UNION ALL
                      SELECT     max(B.KOD_2) KOD_2, A.STOK_KODU, MAX(B.STOK_ADI) AS STOK_ADI, 0 AS BAKIYE1,
                                             SUM(CASE WHEN STHAR_GCKOD = 'G' THEN STHAR_GCMIK ELSE - STHAR_GCMIK END) AS BAKIYE2
                      FROM        PROLINE2010.dbo.TBLSTHAR AS A INNER JOIN
                                             PROLINE2010.dbo.TBLSTSABIT AS B ON A.STOK_KODU = B.STOK_KODU
                      GROUP BY A.STOK_KODU) AS BAKIYELER
GROUP BY STOK_KODU, STOK_ADI, KOD_2

içteki SELECT'lerde GROUP BY oldugu için STSABIT'ten gelen KOD_2 MAX() fonksiyonuyla alinmali, ya da
bu SELECT ifadelerinde GROUP BY'a ilave edilmeli
ben MAX()'i tercih ettim


-------------
Mehmet Baykan


Mesajı Yazan: kıl_ark
Mesaj Tarihi: 27 Şubat 2010 Saat 18:02
merhaba
 
ben bu konuda bir çalisma yapmistim.
sirasiyla
1- her iki firmada asagidaki kodla bir view olusturdum. view ismi stbak
KOD: SELECT     TOP (100) PERCENT TBLSTSABIT.STOK_KODU, TBLSTSABIT.STOK_ADI, TBLSTSABIT.URETICI_KODU,
                      SUM(CASE WHEN TBLSTHAR.STHAR_GCKOD = 'G' THEN ROUND(TBLSTHAR.STHAR_GCMIK, 3) ELSE 0 END) AS GIRIS_MIKTAR,
                      SUM(CASE WHEN TBLSTHAR.STHAR_GCKOD = 'C' THEN ROUND(TBLSTHAR.STHAR_GCMIK, 3) ELSE 0 END) AS CIKIS_MIKTAR,
                      ROUND(SUM(CASE WHEN TBLSTHAR.STHAR_GCKOD = 'G' THEN ROUND(TBLSTHAR.STHAR_GCMIK, 3) ELSE 0 END)
                      - SUM(CASE WHEN TBLSTHAR.STHAR_GCKOD = 'C' THEN ROUND(TBLSTHAR.STHAR_GCMIK, 3) ELSE 0 END), 3) AS BAKIYE
FROM         dbo.TBLSTHAR AS TBLSTHAR INNER JOIN
                      dbo.TBLSTSABIT AS TBLSTSABIT ON TBLSTHAR.STOK_KODU = TBLSTSABIT.STOK_KODU
GROUP BY TBLSTSABIT.STOK_KODU, TBLSTSABIT.STOK_ADI, TBLSTSABIT.URETICI_KODU
ORDER BY TBLSTSABIT.STOK_KODU
2- yeni view olusturup adini da net_stbak yaptim
 
kod :

SELECT     STBAK.STOK_KODU, STBAK.STOK_ADI, STBAK.BAKIYE AS 1F_BAKIYE, STBAK_1.BAKIYE AS 2F_BAKIYE, (CASE WHEN (STBAK_1.BAKIYE IS NULL)
                      THEN STBAK.BAKIYE ELSE STBAK.BAKIYE + STBAK_1.BAKIYE END) AS NET_BAKIYE
FROM         (BIRINCI FIRMA).dbo.STBAK AS STBAK LEFT OUTER JOIN
                      (IKINCI FIRMA).dbo.STBAK AS STBAK_1 ON STBAK.STOK_KODU = STBAK_1.STOK_KODU
 
 
not : burada birlestirme yaparken birinci firmayi ana firma olarak görüp LEFT OUTER JOIN kullandim. (yani birinci firmada bir stok karti açildi fakat ikinci firmada kart açilmadi veya geç açilacak düsüncesi ile)


Mesajı Yazan: hyperia
Mesaj Tarihi: 27 Şubat 2010 Saat 23:27
Merhaba kil_ark katkiniz için tesekkür ederim,
bence bu islem için Mehmet bey in yazdigi view biraz daha uygun çünkü tek view ile isi halledebiliyoruz, çokta saglikli çalisiyor.


Mesajı Yazan: abastas
Mesaj Tarihi: 02 Mayıs 2013 Saat 18:16
Merhaba buna Tarih kisiti koyabilir miyiz_?


Mesajı Yazan: mbaykan
Mesaj Tarihi: 03 Mayıs 2013 Saat 00:21
Bakiye'yi aldiginizda koyacaginiz Tarih kisiti ..'e kadar seklinde olur,
olusturululan view Tarih'i parametre olarak almaz (View bunu saglamaz) çözümü ya stored procedure ya da Table valued Function Yazilabilir asagidaki gibi

CREATE FUNCTION dbo.UDF_BAKIYE2(@TARIH AS SMALLDATETIME)
RETURNS TABLE
as
RETURN
SELECT KOD_2,STOK_KODU,STOK_ADI,SUM(BAKIYE1) BAKIYE1,SUM(BAKIYE2) BAKIYE2 FROM
(SELECT MAX(KOD_2) KOD_2,A.STOK_KODU,MAX(STOK_ADI) STOK_ADI,SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK END) BAKIYE1,0 AS BAKIYE2
FROM TBLSTHAR A,TBLSTSABIT B
WHERE A.STOK_KODU=B.STOK_KODU AND STHAR_TARIH <= @TARIH
GROUP BY A.STOK_KODU
UNION ALL
SELECT MAX(KOD_2) KOD_2,A.STOK_KODU,MAX(STOK_ADI) STOK_ADI,0 AS BAKIYE1, SUM(CASE WHEN STHAR_GCKOD='G' THEN STHAR_GCMIK ELSE -STHAR_GCMIK END) BAKIYE2
FROM DB2..TBLSTHAR A,DB2..TBLSTSABIT B
WHERE A.STOK_KODU=B.STOK_KODU AND STHAR_TARIH <= @TARIH
GROUP BY A.STOK_KODU) AA
GROUP BY KOD_2,STOK_KODU,STOK_ADI

Kullanimi SELECT * FROM dbo.UDF_BAKIYE2('2013-03-31')
seklinde
Kolay gelsin


-------------
Mehmet Baykan



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 11.10 - http://www.webwizforums.com
Copyright ©2001-2017 Web Wiz Ltd. - https://www.webwiz.net