簡體   English   中英

我無法在數據表中搜索一行並更新 vb.net 中的行單元格數據

[英]I can't search a Datatable for one row and update row cell data in vb.net

我正在編寫 Inventory 程序並首次嘗試使用 DataTable。 我想做的就是找到正確的行並能夠更新成本、銷售價格、當前庫存等列。 我已經嘗試了很多我發現的例子,但我似乎無法讓它發揮作用。 我有一個 function 可以找到當前行索引,但我不知道如何移動到該行並更新數據。 我已經嘗試了幾種不同的方式選擇語句,但都沒有成功。 我想搜索作為自動增量記錄 ID 的項目。 這不是那么難,但我花了三天時間轉圈。 如果我能得到一點建議,我將不勝感激。 謝謝

    InvtTable.Columns.Add("Item", Type.GetType("System.Int32"))      ' 1  12
    InvtTable.Columns.Add("ModelStyle", Type.GetType("System.String")) ' 3  2
    InvtTable.Columns.Add("Description", Type.GetType("System.String")) ' 4  3
    InvtTable.Columns.Add("CoverFinsh", Type.GetType("System.String")) ' 5  4
    InvtTable.Columns.Add("Invt.Type", Type.GetType("System.String"))   ' 6  5
    InvtTable.Columns.Add("Tag No.", Type.GetType("System.String"))     ' 7  6
    InvtTable.Columns.Add("Loc", Type.GetType("System.String"))         ' 8  7
    InvtTable.Columns.Add("Curr.Invt.", Type.GetType("System.Int32"))   ' 9  8
    InvtTable.Columns.Add("PO", Type.GetType("System.String"))          ' 10 9
    InvtTable.Columns.Add("PO Date", Type.GetType("System.String"))     ' 11 10
    InvtTable.Columns.Add("CompID", Type.GetType("System.Int32"))     ' 11 10
    InvtTable.Columns.Add("Vendor", Type.GetType("System.String"))     ' 11 10
    InvtTable.Columns.Add("Cost", Type.GetType("System.Int32"))     ' 11 10
    InvtTable.Columns.Add("Retail", Type.GetType("System.Int32"))     ' 11 10
    InvtTable.Columns.Add("Sale", Type.GetType("System.Int32"))     ' 11 10
    InvtTable.Columns.Add("Note", Type.GetType("System.String"))     ' 11 10
    InvtTable.Columns.Add("Width", Type.GetType("System.Int32"))     ' 11 10
    InvtTable.Columns.Add("Length", Type.GetType("System.Int32"))     ' 11 10

這是我嘗試過的一些事情。 前 1

Dim rows As DataRow() = InvtTable.[Select]("Item = '%0%' ", tbxItemID.Text)
For Each row As DataRow In rows
    MsgBox("here")
Next

前 2

Dim matches = From row In InvtTable
                      Let Item = row.Field(Of Int32)("Item")
                      Where Item = Decimal.Parse(tbxItemID.Text)

c# 還有更多示例。 我希望我會朝那個方向走,但我真的不想重新開始。 我希望這對我有足夠的意義。 再次感謝你

Linq 的替代方式

Dim id As Integer = Integer.Parse(tbxItemID.Text)
Dim row As DataRow = 
    table.AsEnumerable().First(Function(row) row.Field(Of Integer)("Item") = id

' Update row
row.SetField("Cost", 99)
row.SetField("Sale", 199)

也就是說,我建議使用普通的 object,這將使此類操作變得非常簡單

Public Class InventoryItem
    Public Property Id As Integer
    Public Property ModelStyle As String
    Public Property CurrentSaldo As Integer
    Public Property CostPrice As Integer
    Public Property SalePrice As Integer
    ' and so on
End Class

比您可以從數據庫或文件或其他任何地方填充項目集合

Dim inventory As List(Of Inventory) = LoadFromDatabase()

Dim id As Integer = Integer.Parse(tbxItemID.Text)
Dim item = inventory.First(Function(item) item.Id = id)

With item
    .CostPrice = 99
    .SalePrice = 199
    .CurrentSaldo -= 1
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM