2017-10-09 83 views
0

請幫忙。這是我的桌子。添加帶回路的listview子項目

ID Item  Qty Added Qty 

1 Ballpen  23  5 

2 Pencil  44  4 

3 Pentelpen 12  5 

我要更新一次的物品,但是當我運行我的程序就變成一樣的第一個項目。

例如,當點擊保存按鈕時,所有項目的數量將是28圓珠筆。

這是我的代碼。提前致謝。

   Dim lvitem As Object 
       Dim iCount As Integer 
       Dim iLoop As Integer 
       Dim qty As Double = Val(lvPO.Items(0).SubItems(1).Text) + Val(lvPO.Items(0).SubItems(2).Text) 

       iCount = lvPO.Items.Count() 
       If Not lvPO.Items.Count = 0 Then 
        Do Until iLoop = lvPO.Items.Count 
         lvitem = lvPO.Items.Item(iLoop) 
         With lvitem 
         Call SEDCommand("E", "tbl_item", " qty = '" & qty & "' WHERE itemid ='" & .SubItems(0).text & "'") 
         End With 
         iLoop = iLoop + 1 
         lvitem = Nothing 
        Loop 
        MsgBox("Purchase Order (" & tb_refpo.Text & ") is added in database!", MsgBoxStyle.Information, "SYSTEM") 
        ClearTextBox(Me) 
       End If 
+1

你的代碼只計算'qty'的一個值,它使用第一個項目來做到這一點。 – Blackwood

+0

@Blackwood我該如何解決這個問題?希望您能夠幫助我。 – Sadnerd

回答

1

正如@Blackwood所說的,你只在循環外計算一次數值,併爲每個項目使用相同的值。你想在循環中這樣做(並使用更多的VB.NET風格的構造使代碼更容易閱讀。這不是VB6 :-))

If lvPO.Items.Count <> 0 Then 
     For Each lvitem as ListViewItem in lvPO.Items 
     With lvitem 
      Dim qty As Double = Val(.SubItems(1).Text) + Val(.SubItems(2).Text) 
      SEDCommand("E", "tbl_item", " qty = '" & qty & "' WHERE itemid ='" & .SubItems(0).text & "'") 
     End With 
     Next 
     MsgBox("Purchase Order (" & tb_refpo.Text & ") is added in database!", MsgBoxStyle.Information, "SYSTEM") 
     ClearTextBox(Me) 
    End If 
+0

非常感謝兄弟!上帝祝福你!祝你今天愉快! – Sadnerd