Hallo ihr lieben
Ich habe mir ein Bestellprogramm gebastelt, welches als zweite exe in meinem Programm funktioniert.
Dieses Programm erstellt - gestartet durch die Hauptanwendung - für eine ausgewählte Firma ein DataSet mit entsprechenden Artikeln und Kategorien (Warengruppen).
Dafür verwende ich ein extra DataSet. Im DtsSettings sind die Daten gespeichert, das DtsExport übernimmt die temporäre speicherung.
DtsExport wird dann aus der Hauptanwendung in eine xml gespeichert, und im Bestellprogramm wird diese temporäre Datei dann eingelesen, damit die beiden DataSets verglichen werden können.
Nun werden neue Artikel hinzugefügt, nicht vorhandene gelöscht usw.
Das funktioniert alles einwandfrei. Mit einer Ausnahme.
Beim Programmieren der Anwendung bin ich so vorgegangen, dass ich einen Lieferanten auswähle, und alle Artikel die diesem Lieferanten zugewiesen sind, dann im DtsExport landen.
Allerdings hatte ich bei den Kategorien einen Denkfehler. Hier schmeiße ich einfach alle die es gibt rein. Sinnvoller wäre ja, nur Kategorien zu exportieren, für die es auch tatsächlich Artikel gibt.
Hier der relevante Code: (Die Sub LoadSupplier öffnet eine Form, auf der alle Lieferanten zur Wahl stehen. Hier wird dann der SupplierBindingSource.Current entsprechend geändert)
Nun scheitere ich aber an dieser Aufgabe.
Ich möchte für jeden Eintrag in
Da ein exportieren wie im obigen Beispiel ja nicht mehr möglich sein wird (schätze ich) - hätte ich auch kein Problem eine Table Categories im DtsExport anzulegen
Und kann ich mit die CategorieRow evtl. schon an dieser Stelle holen:
Soll ich ja eh nicht - aber bekomm ich immer nicht anders hin
Ich habe mir ein Bestellprogramm gebastelt, welches als zweite exe in meinem Programm funktioniert.
Dieses Programm erstellt - gestartet durch die Hauptanwendung - für eine ausgewählte Firma ein DataSet mit entsprechenden Artikeln und Kategorien (Warengruppen).
Dafür verwende ich ein extra DataSet. Im DtsSettings sind die Daten gespeichert, das DtsExport übernimmt die temporäre speicherung.
DtsExport wird dann aus der Hauptanwendung in eine xml gespeichert, und im Bestellprogramm wird diese temporäre Datei dann eingelesen, damit die beiden DataSets verglichen werden können.
Nun werden neue Artikel hinzugefügt, nicht vorhandene gelöscht usw.
Das funktioniert alles einwandfrei. Mit einer Ausnahme.
Beim Programmieren der Anwendung bin ich so vorgegangen, dass ich einen Lieferanten auswähle, und alle Artikel die diesem Lieferanten zugewiesen sind, dann im DtsExport landen.
Allerdings hatte ich bei den Kategorien einen Denkfehler. Hier schmeiße ich einfach alle die es gibt rein. Sinnvoller wäre ja, nur Kategorien zu exportieren, für die es auch tatsächlich Artikel gibt.
Hier der relevante Code: (Die Sub LoadSupplier öffnet eine Form, auf der alle Lieferanten zur Wahl stehen. Hier wird dann der SupplierBindingSource.Current entsprechend geändert)
VB.NET-Quellcode
- 'Firma auswählen
- Dim result As DialogResult
- LoadSupplier(False, result)
- If result = DialogResult.Cancel Then Exit Sub
- If SupplierBindingSource.Current Is Nothing Then Exit Sub
- Dim SelectedSupplier = DirectCast(DirectCast(SupplierBindingSource.Current, DataRowView).Row, DtsSettings.SupplierRow)
- Dim CustNo = SelectedSupplier.CustomeNumber
- Dim ArticleSupplierRow = DtsSettings.ArticleSupplier.FirstOrDefault(Function(x) x.Name = SelectedSupplier.Name)
- If ArticleSupplierRow Is Nothing Then
- MessageBox.Show("Für diesen Lieferanten wurden keine Artikel gefunden")
- Exit Sub
- End If
- Dim RelevantRows = ArticleSupplierRow.GetArticleRows
- 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
- If Not row.IsNoteNull Then newArticle.Note = row.Note
- newArticle.expiring = row.Expiring
- newArticle.CategoryID = row.CategoryID
- DtsExport.Article.Rows.Add(newArticle)
- Next
- DtsExport.WriteXml(Application.StartupPath & "\Programme\Bestellung\TEMP" & SelectedSupplier.Name & ".xml")
- 'DtsExport leeren
- DtsExport.Article.Clear()
- 'Kategorien exportieren
- DtsSettings.Category.WriteXml(Application.StartupPath & "\Programme\Bestellung\TEMPCategory.xml")
Nun scheitere ich aber an dieser Aufgabe.
Ich möchte für jeden Eintrag in
Dim RelevantRows = ArticleSupplierRow.GetArticleRows
die Kategorie auslesen und jede vorkommende Kategorie einmal entsprechend exportieren.Da ein exportieren wie im obigen Beispiel ja nicht mehr möglich sein wird (schätze ich) - hätte ich auch kein Problem eine Table Categories im DtsExport anzulegen
Und kann ich mit die CategorieRow evtl. schon an dieser Stelle holen:
newArticle.CategoryID = row.CategoryID
wenn ich nicht mit der ID arbeite?Soll ich ja eh nicht - aber bekomm ich immer nicht anders hin
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerSmurf“ ()