Logo Destek

Logo Plus Acil Destek (Plus versiyonlarına artık buradan destek verilecektir.) => GO3 - GO PLUS => Konuyu başlatan: Yitik - 15.02.2013, 10:42

Başlık: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 10:42
Merhaba arkadaşlar, aşağıdaki sorgu ile satış fiyatları ve stok bilgisini alıyorum.
Kod: [Seç]
SELECT     dbo.LG_014_ITEMS.STGRPCODE AS [GRUP KODU], dbo.LG_014_ITEMS.CODE AS [MALZ. KODU], dbo.LG_014_ITEMS.NAME AS [MALZ. AÇIKLAMASI],
                      dbo.LG_014_PRCLIST.PRICE AS [SATIŞ FİYATI], SUM(dbo.LG_014_01_STINVTOT.ONHAND) AS [STOK MİKTARI], dbo.LG_014_PRCLIST.CURRENCY AS [DÖVİZ KODU],
                      dbo.LG_014_ITEMS.CYPHCODE
FROM         dbo.LG_014_01_STINVTOT FULL OUTER JOIN
                      dbo.LG_014_ITEMS ON dbo.LG_014_01_STINVTOT.STOCKREF = dbo.LG_014_ITEMS.LOGICALREF FULL OUTER JOIN
                      dbo.LG_014_PRCLIST ON dbo.LG_014_ITEMS.LOGICALREF = dbo.LG_014_PRCLIST.CARDREF
GROUP BY dbo.LG_014_ITEMS.CODE, dbo.LG_014_ITEMS.NAME, dbo.LG_014_PRCLIST.PRICE, dbo.LG_014_PRCLIST.PTYPE, dbo.LG_014_01_STINVTOT.INVENNO,
                      dbo.LG_014_ITEMS.STGRPCODE, dbo.LG_014_PRCLIST.CURRENCY, dbo.LG_014_ITEMS.CYPHCODE
HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2) AND (dbo.LG_014_01_STINVTOT.INVENNO = - 1)
Fakat bu sorguda hareket görmemiş ve stoğumuzda olmayan ürünler gelmiyor. Bunun üzerine sorgunun son satırını aşağıdaki şekilde değiştirdim.
Kod: [Seç]
SELECT     dbo.LG_014_ITEMS.STGRPCODE AS [GRUP KODU], dbo.LG_014_ITEMS.CODE AS [MALZ. KODU], dbo.LG_014_ITEMS.NAME AS [MALZ. AÇIKLAMASI],
                      dbo.LG_014_PRCLIST.PRICE AS [SATIŞ FİYATI], SUM(dbo.LG_014_01_STINVTOT.ONHAND) AS [STOK MİKTARI], dbo.LG_014_PRCLIST.CURRENCY AS [DÖVİZ KODU],
                      dbo.LG_014_ITEMS.CYPHCODE
FROM         dbo.LG_014_01_STINVTOT FULL OUTER JOIN
                      dbo.LG_014_ITEMS ON dbo.LG_014_01_STINVTOT.STOCKREF = dbo.LG_014_ITEMS.LOGICALREF FULL OUTER JOIN
                      dbo.LG_014_PRCLIST ON dbo.LG_014_ITEMS.LOGICALREF = dbo.LG_014_PRCLIST.CARDREF
GROUP BY dbo.LG_014_ITEMS.CODE, dbo.LG_014_ITEMS.NAME, dbo.LG_014_PRCLIST.PRICE, dbo.LG_014_PRCLIST.PTYPE, dbo.LG_014_01_STINVTOT.INVENNO,
                      dbo.LG_014_ITEMS.STGRPCODE, dbo.LG_014_PRCLIST.CURRENCY, dbo.LG_014_ITEMS.CYPHCODE
HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2)
Bu defada hareket görmeyen ürünler geldi, ancak diğer ürünleri iki defa listeliyor. View i tekrar sorguya sokup GROUP BY komutuyla mükerrer kayıtları almamaya çalışsamda LİKE ifadeside kullanacağım için yapıyı oluşturamadım.
recordset açılış kodlarım şu şekilde.
Kod: [Seç]
rs.Open "select * from stokbaris WHERE stokbaris.[MALZ. KODU] LIKE '" & TextBox5.Text & "%'", con, 1, 1Ya view i düzeltmeliyim yada üstteki recordset açılışında mükerrer kayıtları engellemeliyim. Bu noktada tıkandım kaldım.
İyi çalışmalar dilerim.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Silinmiş Kullanıcı - 15.02.2013, 11:39
distinct denedin mi ?
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: halisbatmaz - 15.02.2013, 13:49
Konuyu Asıl yerine taşısak iyidir.
İyi çalışmalar
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 13:50
Baran Bey sql i öğrenme aşamasındayım, distinct ile tek alanı alabiliyoruz diye biliyorum o yüzden hiç denemedim.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 13:51
Konuyu Asıl yerine taşısak iyidir.
İyi çalışmalar

Sql başlığını konuyu açtıktan sonra farkettim Halis Bey, biraz dikkatsiz davrandım.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: halisbatmaz - 15.02.2013, 13:52
bu sorguda stokta olmayan ürünlerde listeleniyor
http://d1302.hizliresim.com/16/h/k45k6.png
SELECT     
ITM.CODE AS KODU,
ITM.STGRPCODE AS Kodu,
ITM.NAME AS Adı, onhand AS [Fiili Stok], 
tot.ONHAND-ACTSORDER AS [Gerçek Stok],                             
(SELECT     TOP 1 PRICE                              FROM          LG_008_06_STLINE                              WHERE      STOCKREF = ITM.LOGICALREF AND (TRCODE = 1 OR                                                     (TRCODE = 14 AND BILLED = 0)) AND LPRODSTAT = 0 AND LINETYPE = 0                              ORDER BY DATE_ DESC) AS [Son Alış]  FROM         LG_008_06_GNTOTST TOT INNER JOIN                        LG_008_ITEMS ITM ON ITM.LOGICALREF = TOT.STOCKREF  WHERE     (TOT.INVENNO =0) AND (ITM.ACTIVE = 0)    ORDER BY ITM.NAME
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: MehmetYavuz - 15.02.2013, 13:55
Selam,

Having kısmında sıkıntı var. şartınızda type=2 demişsiniz, olmayan ürünler için bu alan null geliyor.

şu şekilde denenebilir:
HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2) or PRCLIST.PTYPE ISNULL

yada

HAVING      ISNULL((dbo.LG_014_PRCLIST.PTYPE, -1)) IN (-1,2)
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 13:59
Halis Bey sorgunuzu kendi firma bilgilerime göre düzenledim, hata vermiyor, fakat herhangi bir bilgi getirmiyor.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: halisbatmaz - 15.02.2013, 14:03
o alış fiyatlı ondan satış fiyatına çevir 
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 14:10
Selam,

Having kısmında sıkıntı var. şartınızda type=2 demişsiniz, olmayan ürünler için bu alan null geliyor.

şu şekilde denenebilir:
HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2) or PRCLIST.PTYPE ISNULL

yada

HAVING      ISNULL((dbo.LG_014_PRCLIST.PTYPE, -1)) IN (-1,2)


Mehmet Bey ilk kodu uyguladım gelen satır adeti düştü ancak yine iki defa gelen ürünler var. Logonun içinden stok alıp karşılaştıracağım.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 14:24
o alış fiyatlı ondan satış fiyatına çevir

Halis Bey konuyu doğru anlatamadım benim hatam. 0 stokları görebiliyorum orada bir sıkıntı yok, fakat uzun süredir işlem görmemiş bazı ürünler var onları görmemek için  HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2) AND (dbo.LG_014_01_STINVTOT.INVENNO = - 1) şeklinde idi, şimdi o ürünleride görmemiz gerekiyor  HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2) şeklinde değiştirdim hareket görmeyenler geliyor ancak bu defada hareketli ürünlerimizi 2 defa listeliyor.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 15.02.2013, 14:33
Mehmet Bey HAVING kısmıyla ilgili her iki önerinizide denedim NULL değerleri 1 defa  diğerlerini 2 defa listeliyor.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: halisbatmaz - 15.02.2013, 15:18
Yani şöyle bişey istiyorsun tam deniyemedim kampanya yapıyoruz. patron yanımda sadece 2 raporumu birleştirdim ama alış fiyatı bu dedimya değitirmeye vaktim yok gizli gizli yazıyorum
 ama istediğini verecektyir. stokta olmayanlarda geliyor üstelik x ürünün kaç gündür satılmadı bilgiside

SELECT
A.CODE ,
A.NAME ,
A.STGRPCODE ,       
ANA_BRIM=ISNULL((Select TOP 1 NAME From LG_008_UNITSETL WHERE LOGICALREF=(SELECT TOP 1 UNITLINEREF FROM LG_008_ITMUNITA I WHERE I.ITEMREF=A.LOGICALREF AND LINENR=1)),''),       A.CAPIBLOCK_CREADEDDATE , 

 (SELECT DATE_ FROM LG_008_05_STLINE WHERE LOGICALREF IN (SELECT TOP 1 LOGICALREF FROM LG_008_06_STLINE    WHERE IOCODE IN (3,4) AND STOCKREF=A.LOGICALREF ORDER BY DATE_ DESC)) ,   

(SELECT ONHAND FROM Lg_008_06_GNTOTST WHERE INVENNO=0 AND STOCKREF=A.LOGICALREF)  ,   
CAST ((GETDATE()-(SELECT DATE_ FROM LG_008_05_STLINE WHERE LOGICALREF IN (SELECT TOP 1 LOGICALREF FROM LG_008_06_STLINE     WHERE IOCODE IN (3,4) AND STOCKREF=A.LOGICALREF ORDER BY DATE_ DESC))) AS INT),
(SELECT     TOP 1 PRICE                              FROM          LG_008_06_STLINE                              WHERE      STOCKREF = A.LOGICALREF AND (TRCODE = 2 OR                                                     (TRCODE = 14 AND BILLED = 0)) AND LPRODSTAT = 0 AND LINETYPE = 0                              ORDER BY DATE_ DESC) AS [Son Satış]
   
FROM LG_008_ITEMS A,  LG_008_UNITSETF UN   WHERE A.CARDTYPE IN (1,11,12)  AND   A.UNITSETREF=UN.LOGICALREF AND A.ACTIVE=0 AND      (SELECT ONHAND FROM Lg_008_06_GNTOTST WHERE INVENNO=0 AND STOCKREF=A.LOGICALREF)>0.5  ORDER BY A.NAME   
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: ByBirol® - 15.02.2013, 15:26
Halis teknik olarak sende dogru cikan sonuclar diger deneyen her 5 kisiden 3 'Nde yanlis sonuc dondurur.Buda oyle olacak
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: halisbatmaz - 15.02.2013, 15:41
Bu son satış fiyatı üzerinden 
KODU
ÜRÜN ADI
GRUP KODU
BİRİM
KAYIT TARİHİ
SON HAREKET TARİHİ
SON SATIŞ FİYATI
--------------------------------
ben denemeden kontrol etmeden hiç bir kodu yayınlamıyorum hocam mahçup olmakta var işin içinde
yanlış çeviren kim o hele 1 adım öne gelsin görüm onu   
AYRICA BUNU BİLE YAPABİLİYORSAM NE MUTLU BANA
BUGÜN BİR ARK. BANA MSJ ÇEKTİ ŞÖYLE YAZIYOR.
TARİH 12.06.2012 " ben kod yazamıyorum ancak değiştirebiliyorum" bunu ben yazmıştım  şimdi sizin sayenizde durum ortada
--------------------------------------------------------------------
SELECT
A.CODE ,
A.NAME ,
A.STGRPCODE ,       
ANA_BRIM=ISNULL((Select TOP 1 NAME From LG_008_UNITSETL WHERE LOGICALREF=(SELECT TOP 1 UNITLINEREF FROM LG_008_ITMUNITA I WHERE I.ITEMREF=A.LOGICALREF AND LINENR=1)),''),       A.CAPIBLOCK_CREADEDDATE , 

 (SELECT DATE_ FROM LG_008_06_STLINE WHERE LOGICALREF IN (SELECT TOP 1 LOGICALREF FROM LG_008_06_STLINE    WHERE IOCODE IN (3,4) AND STOCKREF=A.LOGICALREF ORDER BY DATE_ DESC)) ,   

(SELECT ONHAND FROM Lg_008_06_GNTOTST WHERE INVENNO=0 AND STOCKREF=A.LOGICALREF)  ,   
CAST ((GETDATE()-(SELECT DATE_ FROM LG_008_06_STLINE WHERE LOGICALREF IN (SELECT TOP 1 LOGICALREF FROM LG_008_06_STLINE     WHERE IOCODE IN (3,4) AND STOCKREF=A.LOGICALREF ORDER BY DATE_ DESC))) AS INT),
(SELECT     TOP 1 PRICE                              FROM          LG_008_06_STLINE                              WHERE      STOCKREF = A.LOGICALREF AND (TRCODE = 8 OR                                                     (TRCODE = 3 AND BILLED = 0)) AND LPRODSTAT = 0 AND LINETYPE = 0                              ORDER BY DATE_ DESC) AS [Son Satış]
   
FROM LG_008_ITEMS A,  LG_008_UNITSETF UN   WHERE A.CARDTYPE IN (1,11,12)  AND   A.UNITSETREF=UN.LOGICALREF AND A.ACTIVE=0 AND      (SELECT ONHAND FROM Lg_008_06_GNTOTST WHERE INVENNO=0 AND STOCKREF=A.LOGICALREF)>0.5  ORDER BY A.NAME   
--------------
Hiç uyarmıyorsunuz da  orda dönemlerim farklı

Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: ByBirol® - 15.02.2013, 15:57
Sorun bu degil,senin db ve program Cok eski yenilere uyumsuz olabiliyor !
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: halisbatmaz - 15.02.2013, 16:03
haaa o başka tabi
Yakında bizi müzeye alacaklar doğru


özellikle bu kısım olabilir
Lg_008_06_GNTOTST
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Monsieur® - 15.02.2013, 22:28

ben denemeden kontrol etmeden hiç bir kodu yayınlamıyorum hocam mahçup olmakta var işin içinde
yanlış çeviren kim o hele 1 adım öne gelsin görüm onu   
AYRICA BUNU BİLE YAPABİLİYORSAM NE MUTLU BANA
BUGÜN BİR ARK. BANA MSJ ÇEKTİ ŞÖYLE YAZIYOR.
TARİH 12.06.2012 " ben kod yazamıyorum ancak değiştirebiliyorum" bunu ben yazmıştım  şimdi sizin sayenizde durum ortada

İşte bu yüzden paylaşımlara dikkat edin, yasak olan query leri paylaşmayın alıp ne olduğuna bakmadan direkt kullananlar var.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 18.02.2013, 15:29
Selam,

Having kısmında sıkıntı var. şartınızda type=2 demişsiniz, olmayan ürünler için bu alan null geliyor.

şu şekilde denenebilir:
HAVING      (dbo.LG_014_PRCLIST.PTYPE = 2) or PRCLIST.PTYPE ISNULL

yada

HAVING      ISNULL((dbo.LG_014_PRCLIST.PTYPE, -1)) IN (-1,2)

distinct denedin mi ?

Merhaba arkadaşlar, Cuma günü İzmir'e gitmem gerekiyordu sanırım o yüzden kafam biraz dağınıktı.Hafta sonu kaçış iyi gelmiş olacak ki :), bugün Baran bey'in tavsiyesiyle "distinct" komutunu, Mehmet bey'in tavsiyesi ilede "or PRCLIST.PTYPE ISNULL" komutunu sorguya ekledim sonuç çok iyi görünüyor. Tek sıkıntı arızalı iadeleride ekranıma getiriyor.. Bunun dışında tam istediğim gibi. İlgilenen tüm arkadaşlara teşekkür ederim. Arızalıları getirmemesi için tavsiyelerinizi bekliyorum. İyi çalışmalar dilerim.
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Silinmiş Kullanıcı - 18.02.2013, 16:45
Arızalılar için bir ambar varsa ambar kodunu sorguya dahil edebilirsiniz
Başlık: Ynt: Stok ve fiyat bilgileri
Gönderen: Yitik - 18.02.2013, 17:15
Bizde ambar bilgileri tüm stoklarda "0" Baran bey, fakat arızalı ürünlerin grup kodu "98", bu sorguyu vba da küçük bir program için kullanıyorum, aslında orada "if" yardımıyla bu sonuçları eleyebilirim, ancak her istasyondaki kodları yenilemem lazım, ayrıca sql öğrenmek istiyorum o yüzden konuyu sorgu içinde çözebilirsek, bende sql bilgilerimin üstüne 1-2 tuğla koymuş olacağım. İyi çalışmalar dilerim.