Hallo ihr lieben
Ich stehe gerade auf dem Schlauch.
In meinem DataSet gibt es die DataTable "Supplier" und "ArticleSupplier".
Ich habe eine Funktion "LoadSupplier()" mit der ich die BindingSource.Current der "Supplier" Table ändern kann, um so einen Lieferanten auszuwählen.
Spoiler anzeigen
Nachdem ich nun den Lieferanten ausgewählt habe, möchte ich anhand des Namens (also Supplier.Name) den Lieferanten in "ArticleSupplier" auswählen.
Allerdings stehe ich da gerade auf dem Schlauc:
Ich möchte also mittels LoadSupplier() einen Lieferanten auswählen - das klappt. Jedoch ist meine "relevantRows" falsch, denn der Lieferant "Coca Cola" hat ja in der ArticleSupplier sehr wahrscheinlich eine andere ID als in der Supplier Table.
Also möchte ich die ArticleSupplier anhand des Lieferanten Namens (SelectedSupplier.Name) durchsuchen und wenn dieser gefunden wurde auf die entsprechende Row casten, damit ich (wie im Code oben) die "relevantRows" ins DataSet exportieren kann.
Ich wollte das eigentlich so machen:
Allerdings meckert mein Compiler, dass "ID" kein Member von "EnumerableRowCollection(Of DtsSettings.Article.SupplierRow) sei.
Edit: Ein Bildchen das DataSets gitbs natürlich auch noch
Ich stehe gerade auf dem Schlauch.
In meinem DataSet gibt es die DataTable "Supplier" und "ArticleSupplier".
Ich habe eine Funktion "LoadSupplier()" mit der ich die BindingSource.Current der "Supplier" Table ändern kann, um so einen Lieferanten auszuwählen.
Die in der Sub aufgerufene Form beinhaltet eine Combobox und ein DGV, mit entsrechender Binding Source.
Das Funktioniert alles.
Das Funktioniert alles.
VB.NET-Quellcode
- Private Sub LoadSupplier()
- Using SupplierSelect As New frmSupplierSelect()
- SupplierSelect.DtsSettings = Me.DtsSettings
- SupplierSelect.SupplierBindingSource.DataSource = Me.DtsSettings
- SupplierSelect.ShowDialog(Me)
- SupplierBindingSource.Position = SupplierSelect.SupplierBindingSource.Position
- End Using
- End Sub
Nachdem ich nun den Lieferanten ausgewählt habe, möchte ich anhand des Namens (also Supplier.Name) den Lieferanten in "ArticleSupplier" auswählen.
Allerdings stehe ich da gerade auf dem Schlauc:
VB.NET-Quellcode
- Private Sub BTNOrderWith_Click(sender As Object, e As EventArgs) Handles BTNOrderWith.Click
- 'Firma auswählen
- LoadSupplier()
- If SupplierBindingSource.Current Is Nothing Then Exit Sub
- Dim SelectedSupplier = DirectCast(DirectCast(SupplierBindingSource.Current, DataRowView).Row, DtsSettings.SupplierRow)
- Dim RelevantRows = DtsSettings.Article.Where(Function(x) x.SupplierID = SelectedSupplier.ID)
- ' siehe Anmerkung unterhalb
- Dim newArticle As DtsExport.ArticleRow
- For Each row In RelevantRows
- newArticle = DtsExport.Article.NewArticleRow
- newArticle.ArtNr = row.ArtNr
- If Not row.IsEANNull Then newArticle.EAN = row.EAN
- newArticle.Name1 = row.Name1
- If Not row.IsName2Null Then newArticle.Name2 = row.Name2
- newArticle.Ve = row.Ve
- newArticle.PurchasingPrice = row.PurchasingPrice
- newArticle.Tax = row.Tax
- If Not row.IsNoteNull Then newArticle.Note = row.Note
- DtsExport.Article.Rows.Add(newArticle)
- Next
- DtsExport.WriteXml(Application.StartupPath & "\Programme\Bestellung\TEMP" & SelectedSupplier.Name & ".xml")
- 'DtsExport leeren
- DtsExport.Article.Clear()
- 'Bestelldatei starten
- Diagnostics.Process.Start(Application.StartupPath & "\Programme\Bestellung\Order.exe", SelectedSupplier.Name & " IMPORT")
- End Sub
Ich möchte also mittels LoadSupplier() einen Lieferanten auswählen - das klappt. Jedoch ist meine "relevantRows" falsch, denn der Lieferant "Coca Cola" hat ja in der ArticleSupplier sehr wahrscheinlich eine andere ID als in der Supplier Table.
Also möchte ich die ArticleSupplier anhand des Lieferanten Namens (SelectedSupplier.Name) durchsuchen und wenn dieser gefunden wurde auf die entsprechende Row casten, damit ich (wie im Code oben) die "relevantRows" ins DataSet exportieren kann.
Ich wollte das eigentlich so machen:
Allerdings meckert mein Compiler, dass "ID" kein Member von "EnumerableRowCollection(Of DtsSettings.Article.SupplierRow) sei.
Edit: Ein Bildchen das DataSets gitbs natürlich auch noch
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerSmurf“ ()