Envanter Girişi ve Çıkışı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Envanter Girişi ve Çıkışı

Mesaj gönderen guney_tosun »

Merhabalar Herkeze;
Forumda konusu çok geçti farkındayım yaptığım aramalarda çok detaylı bilgilere ulaşmama rağmen sorunumu çözemedim henüz.

Bir Supermarket dusunun stokdaki konservelerin miktarı 50 adet.
Aynı konservelerden gene satın alınıyor ve bunları stoğa işlemek istiyorum.
90 tane daha aldık diyelim 50+90=140 işlemini yapıp o konserveeler için stok miktarını 140 olarak update etmesini istiyorum. Yani;

Stok=Eskideğer+SatınAlınanmiktar

Sağolun..
Celebrating the past , Creating the Future
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Bu şekilde bir soruya kimseden cevap bekleme bence.
Cevabı yazmışsın ,
Ne aşamaya geldin.
update işlemi mi yapamıyorsun?
Sql de mi takıldın?
Db ne ?
v.s.s...v.v.dd...s..sş.v.v.şs..s..v..s

bunu nerde yapmayı düşündün internet de bir sitede mi?
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Bence yukarıda anlattıklarım durumu açıklıyor. Benim yazdığım sql update ediyor fakat benım istediğim update etmesi değil eski değer ile yeni değeri toplayıp tekrar aynı alana yazdırması.

TOPLAM=ESKIDEGER+SATINALINAN DEĞER

Kod: Tümünü seç

Bir Supermarket dusunun stokdaki konservelerin miktarı 50 adet. 
Aynı konservelerden gene satın alınıyor ve bunları stoğa işlemek istiyorum. 
90 tane daha aldık diyelim 50+90=140 işlemini yapıp o konserveeler için stok miktarını 140 olarak update etmesini istiyorum
Daha açıkmı anlatmalıyım anlaşılmıyormu yazdıklarım yoksa :(
Celebrating the past , Creating the Future
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

guney_tosun yazdı:Stok=Eskideğer+SatınAlınanmiktar

Kod: Tümünü seç

Format('update stok set miktar=isNull(miktar,0)+%s where Kod=%s',[YeniMiktar,Stokkodu])
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Yazdığınızı biraz açıklamanız mumkunmudur? SP mi Trigger mı ? Nasıl kullanacağımı bilmiorum delphi kodu olsa problem olmas..
Teşekkür ederim
Celebrating the past , Creating the Future
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Kod: Tümünü seç

Update Manager. Ord_Ana_Malz Set As_SAV=As_SAV + 2 where SNO='+EDIT1.Text+'


Sorunsuz çalışıyor fakat tek problemim

Alanlarda default value (boş),yani alanlar boş olunca Update işlemi yapmıyor bu kod. Default value olarak 0 tanımlamam gerekiyor.Denedim 0 verince çalıştı..Nası olacak sizce? Farklı bir fikri olan varı ?
Celebrating the past , Creating the Future
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Benim anladığım şaban hocanın SQL ine göre MSSQL kullanıyorsunuz.

Yeni kayıt girişinde artıracam demişsiniz.
Düzeltme veya silme olursa ne olucak??
Bunun için delphide değil sql server data da bir Trigger yazmanınız daha mantıklı.

stok giriş tablosunun insert, update ve delete işlemlerini takip edip
alanı güncellettirin.
sitede örnekleri var.
@Fahrettin abinin makalesini bir incele

viewtopic.php?t=644&postdays=0&postorder=asc&start=0
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Eğer değer null ise bazı veritabanları bu değer üzerinden işlem yapmazlar. Sizin bunu 0'mış gibi göstermeniz gerekmektedir. Dikkat edersen sorgumda isNull kullandım ama siz hiç kullanmamışsınız. Birde kullandığın veritabanı nedir diye soracağım ama yine cevap vermeyeceksin herhalde. Çünkü ne sorunda istediklerin ne de çözüm için yardımcı olacak insanlara açıklayıcı bilgilerin hiç yeterli değil. Sırf bu yetersizliğe vurgu yapmak için küçük bir cevap verdim. Sorunuzun cevabını alabilmek için, tüm detaylardan olduğu gibi bahsetmeniz gerekmektedir. Zira buradan sizin ne yapmaya çalıştığınızı anlamaya çalışmak müneccimlikten öte bir şey değildir. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Tekrar merhaba;
Oracle 10g kullanıyorum ..
Urunlrein oldugu bir tablom var ayrıca urunlerin adetlerini değiştiridiğim ayrı bir tablom var. Ürün adetlerini değiştirince lookup ile ana ürün tablosundan bakıp o ürünün stok seviyesini arttırmak amacım. Ama o urun stokda yok 0 olması gerekiyor değerin ama null değer var dolayısıyla kodum dogru olmasına ragmen arttıramıyorum. Null değer yerine 0 girsem kod çalışıyor. ISNULL kullanmadım Oracle10g de nasıl kullanırım veya sorgumda delphiden halletmek ilk tercihim cunku trigger kullanmayı bilmiyorum .
DEdiğim gibi;
Update problemim halloldu sadece alanlardaki default value ları 0 olarak gostermem gerekiyor.Bunu halladersem problemim ortadan kalkıcak.

SAğolun..
Celebrating the past , Creating the Future
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

COALESCE(ALAN, 0) ALAN NULL ise 0 ya da istediğin bir değer döner :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

bence depo değerini yani bakiyeyi sabit bir alanda oynayarak değilde stok hareketlerinden toplam_giren-toplam_cikan şeklinde yapın
bu şekilde çok başınız ağrız...özellikle üretim ile alakalı bir modül var ise hepten karışır.
kolay gelsin
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

serkan yazdı:bence depo değerini yani bakiyeyi sabit bir alanda oynayarak değilde stok hareketlerinden toplam_giren-toplam_cikan şeklinde yapın
bu şekilde çok başınız ağrız...özellikle üretim ile alakalı bir modül var ise hepten karışır.
kolay gelsin
Bu öneri ye tam zıttım
stoklar(hatta cari hesaplar) ile ilgili bütün hareket toplamlarını hareket tablosundan ayrı bir tabloda tutulmasından yanayım.((giriş-çıkış,alış-satış siparişi vs..)burda var ise depo bazında)
Özellikle üretim demişsiniz üretim var ise kesinlikle böyle bir uygulamaya gidilmeli.
çünkü özellikle hammadde hareketleri çok olur.Tüm tablodan bu satırları toplattırmak SQL ile baş ağrıtmaya benzer.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Tekrar merhaba;
Üretim modülü yok gelecek için bole bir plan da yok.

"COALESCE(ALAN, 0) ALAN NULL ise 0 ya da istediğin bir değer döner"

Nasıl kullanabilirim bunu ? açıklayabilirmisiniz.

Ayrıca Default Value vermeye çalışmama rağmen olmadı default value suna 0 verdim ama :( Bunu dışında Direk update denedim gende null değeri 0 a dönüştürmüyor.. :?:
Celebrating the past , Creating the Future
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

SQL kodlaması yaparken ALAN yazmak yerine COALESCE(ALAN,0) yazman yeterli.

Kod: Tümünü seç

Update Manager. Ord_Ana_Malz Set As_SAV=COALESCE(As_SAV,0) + 2 where SNO='+EDIT1.Text+'
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
guney_tosun
Üye
Mesajlar: 82
Kayıt: 19 Ağu 2005 09:34
Konum: Istanbul

Mesaj gönderen guney_tosun »

Kod: Tümünü seç

Update Manager. Ord_Ana_Malz Set As_SAV=COALESCE(As_SAV,0) + 2 where SNO='+EDIT1.Text+'
gibi kullansamda
bunu as_sav alanındaki her değere uygulamicakmı ? diyelim null olmayıpda içi dolu olan satırlarda var bunlardaki verilere birşey olurmu ?


Teşekkürler.
Celebrating the past , Creating the Future
Cevapla