2016-03-23 23 views
-1

enter image description here ilk resim aynıdır benim envanterdir ItemID farklı ExpirationVB.net Güncellenmesi aynı kimlik farklı son kullanma

enter image description here

Ve İkinci resim sen Quantity 297, neden görebileceği benim İşlem olduğunu Benim miktarım 297 çünkü ilk BatchID, Quantity 12'dir ve ikincisi, 285 Quantity olan BatchID 2'dir ve SUM(Quantity)'u gereksiz hale getirmek için kullanıyorum.

enter image description here

şimdi benim sorunum ben bu kodu nasıl olduğunu.

i ilk BatchID var ve ikinci BatchID şimdi ben 15pcs ilk BatchID şimdi 0pcs vardır ve ikinci BatchID 282 olduğunu satın ne olacağını 15pcs satın almak istiyorum 297 arasında 285pcs toplam 12pcs Quantity var ... .

benim programda o -3pcs ve 285pcs

son resim miktarı beni çok teşekkür ederim yardım lütfen güncelleme için benim kodudur

+0

Kesintilerinizi -12 ve -3'e dağıtmanız gerekecektir. – StingyJack

+0

whaat demek istiyorsun? – Leira

+0

Sorgunuzu Gönderin – Dejan

cevap

0

Sen her seri için kayıt sayıları almak gerekir t O db ve onlardan ne kadar kesinti yapmanız gerektiğini belirler. Veritabanı tabloları, güncelleme yaparken aynı ItemID için Qty alanını paylaşmak istediğinizi "bilmez" (Ama bu mantığı saklı bir prosedüre koyabilirsiniz).

Bazı yalancı kod daha faydalı olabilir

Dim totalQty as Integer = 15 
'Open a new SqlConnection 
'Query for all rows for ItemID = 5 and put them into a data table variable "dataTable" 
'Close the connection 

Dim quantsToDeduct as new Dictionary(Of Integer, Integer) 'Consider using a Tuple<int, int, int> if you need to also calculate the price of these also. 
For each DataRow in "dataTable" 
    Dim rowQty as Integer = Convert.ToInt32(row["Quantity"]) 
    Dim qtyToDeduct As Integer = 0 
    If totalQty - rowQty >= 0 Then 
    qtyToDeduct = totalQty 
    quantsToDeduct.Add(Convert.ToInt32(row["BatchID"), qtyToDeduct) 
    totalQty = totalQty - qtyToDeduct 
    Else 
    qtyToDeduct = rowQty 
    quantsToDeduct.Add(Convert.ToInt32(row["BatchID"), qtyToDeduct) 
    totalQty = totalQty - qtyToDeduct  
    End If 

    If totalQuantity <= 0 Exit For 
End For 

For Each quantToDeduct in quantsToDeduct 
' Issue the update statement for the batchID (quantToDeduct.Key) and the quantity (quantToDeduct.Value) 
End For 

Birkaç diğer noktalar ...

  • Verileri okurken kod yukarıdaki bit muhtemelen hesaplanması, bir TransactionScope sarılmış olmalıdır onunla bir şey ve daha sonra orijinal olarak okunan verilere dayanarak bir güncelleme gerçekleştirir. mallar için
  • Miktarlar her zaman (ürün ağırlığının satılmaktadır ya da partials olarak satılabilir olduğu gibi), bu yüzden
  • Sen miktarlarda kesinti isteyebilirsiniz Miktar alanı için ondalık kullanmayı düşünün tamsayılar olmayabilir ExpirationDate sırasına göre en eski stoklar ilk önce satılıyor.
+0

Merhaba btw nedir bu envanter tablosundan Miktar güncelleyecek satın alma düğmesini tıklayın bu kod Tamsayı olarak TOTALQTY = 15 mi? – Leira

+0

Sorunuz "Hemen şimdi 15 adet satın almak istiyorum", yani satırlar boyunca düşmek istediğiniz toplam miktar. – StingyJack

İlgili konular