Hallo!
Public Class frmLagerHaltung
Dim dt As New DataTable
Dim dgv As New DataGridView With
{.Parent = Me, .Top = 10, .Left = 10, .Width = 300, .Height = 200,
.DataSource = dt}
Dim WithEvents btnÜbertragung As New Button With
{.Parent = Me, .Text = "Übertragung",
.Top = 220, .Left = 10, .Width = 300}
Dim dgv2 As New DataGridView With
{.Parent = Me,
.Top = 250, .Left = 10, .Width = 300, .Height = 200,
.AllowUserToAddRows = False}
Dim WithEvents btnLagerbestand As New Button With
{.Parent = Me, .Text = "Bestand",
.Top = 470, .Left = 10, .Width = 300,
.Enabled = False}
Private Sub frmLagerHaltung_Load(sender As Object, _
e As EventArgs) Handles MyBase.Load
Me.Size = New Size(350, 600)
Dim rndm As New Random
'Eine Teileliste erstellen
With dt
With .Columns
.Add("Artikel", GetType(String))
.Add("Anzahl", GetType(Integer))
End With
With .Rows
For i As Integer = 65 To 80
.Add(Chr(i), rndm.Next(10, 100))
Next
End With
.PrimaryKey = {dt.Columns("Artikel")}
End With
End Sub
Private Sub btnÜbertragung_Click(sender As Object, _
e As EventArgs) Handles btnÜbertragung.Click
'Eine Bestellung als eingelesene CSV
'per Methode <IO.Readalllines>
Dim bestellung() As String = {"Maier;C;12",
"Maier;F;17",
"Maier;P;9"}
With dgv2
'DGV2 einrichten
.Columns.Clear() : .Rows.Clear()
For c As Integer = 0 To bestellung(0).Split(";"c).Length - 1
Dim cn As String = "Col_" & (c + 1).ToString
.Columns.Add(cn, cn)
Next c
'DGV2 füllen
For r As Integer = 0 To bestellung.Length - 1
.Rows.Add(bestellung(r).Split(";"c))
Next r
btnLagerbestand.Enabled = .Rows.Count > 0
End With
End Sub
Private Sub btnLagerbestand_Click(sender As Object, _
e As EventArgs) Handles btnLagerbestand.Click
With dgv2
If .Rows.Count < 1 Then Exit Sub
For r As Integer = 0 To .Rows.Count - 1
'Artikel-Zeile in der Lagerliste 'dt' ermitteln
'(ohne Schlüssel)
Dim row As DataRow =
GetRow(.Rows(r).Cells("Col_2").Value.ToString)
'Teilezahl im Lager verringern
row.Item("Anzahl") =
CInt(row.Item("Anzahl")) - CInt(.Rows(r).Cells("Col_3").Value)
Next r
End With
btnLagerbestand.Enabled = False
'Hier kann ein Datenbank-Update erfolgen
End Sub
Private Function GetRow(ByVal Artikel As String) As DataRow
For i As Integer = 0 To dt.Rows.Count - 1
If dt.Rows(i)("Artikel").ToString.Equals(Artikel) Then
Return dt.Rows(i)
End If
Next i
'sollte bei konsistenter Datenhaltung nicht auftreten
Return Nothing
End Function
End Class |