Moin Leute
Ich habe ein Bestellprogramm erstellt, mit dem ich Bestellungen und Bestände anlegen kann.
Die Bestände brauche ich bei manchen Firmen wo ich Ware immer auf eine gleiche Menge aufstocke. (Soll = 100 / Bestand = 20 / also Bestellung 80 Stück)
Wenn meine Bestellung fertig ist, wird diese mittels PdfFileWriter in eine ordentlich aussehende pdf geschrieben und auf Wunsch (auswählbar) als email versendet, oder eben nicht.
Außerdem gibt es neben den offensichtlichen Funktionen noch eine EAN Code Suche.
Hier kann eingestellt werden wonach gesucht werden soll (EAN8 / EAN12 / EAN13).
numerische Tastenanschläge (wie sie auch von einem Barcode Scanner kommen) werden dann gespeichert und nach Druck auf Enter wird die EAN Code suche gestartet.
Das Funktioniert auch wunderbar mit Barcode Scannern.
Insgesamt funktioniert fast alles im Programm - ich verwende es auch bereits.
Eine Sache klappt nicht immer:
Das ArticleDGV links und die Labels zur Anzeige der Artikeldaten in der Mitte sind beide an die gleiche ArticleBindingSource gebunden.
Wenn nun mit der EAN Code Suche ein EAN Code gefunden wurde, werden die Labels korrekt aktualisiert (es wird der richtige Artikel angezeigt).
Allerdings wird im DGV (welche an der gleichen BindingSource hängt) nur manchmal der gefundene Artikel angezeigt.
Ich habe noch nicht herausgefunden, wann eine Änderung der Selektion erfolgt und wann nicht.
Also Beispiel am Bild "Dose Cola" ist selektiert.
Suche ich nun den EAN Code von Kiste Fanta, werden in den Labels die Infos von "Kiste Fanta" angezeigt, im DGV bleibt aber "Dose Cola" ausgewählt.
Hier soll natürlich auch Kiste Fanta dann ausgewählt sein. Der Rest funktioniert aber alles - Menge wird dem richtigen Artikel zugewiesen.
So sieht die EAN Suche aus:
Spoiler anzeigen
Ich kann gerne auch die Solution hochladen, wenn der gepostete Code nicht reicht.
Allerdings schaffe ich es nicht das ganze in einer DemoApp abzubilden, weil dies ein riesenaufwand ist. Ich müsste also das Originalprogramm hochladen mit massig Code drumherum.
Wenns nötig ist mach ich das natürlich und separiere den relevanten Code in einem Modul oder sowas.
Und ein weiteres Problem habe ich mit dem Programm.
Das ganze sieht unsagbar scheiße aus. Vorallem die Bestände / Bestellungen Geschichte funktioniert zwar - ist aber wenig praktikabel.
Solange es an den gleichen Daten Bestellungen und Bestände gibt ist es OK und noch halbwegs überscihtlich.
Wenn es aber mehr Bestände oder Bestellungen gibt, also die Daten nicht schön nebeneinander stehen, wird das ganze sehr unübersichtlich.
Wie würdet ihr das ganze optisch abbilden?
Ich habe ein Bestellprogramm erstellt, mit dem ich Bestellungen und Bestände anlegen kann.
Die Bestände brauche ich bei manchen Firmen wo ich Ware immer auf eine gleiche Menge aufstocke. (Soll = 100 / Bestand = 20 / also Bestellung 80 Stück)
Wenn meine Bestellung fertig ist, wird diese mittels PdfFileWriter in eine ordentlich aussehende pdf geschrieben und auf Wunsch (auswählbar) als email versendet, oder eben nicht.
Außerdem gibt es neben den offensichtlichen Funktionen noch eine EAN Code Suche.
Hier kann eingestellt werden wonach gesucht werden soll (EAN8 / EAN12 / EAN13).
numerische Tastenanschläge (wie sie auch von einem Barcode Scanner kommen) werden dann gespeichert und nach Druck auf Enter wird die EAN Code suche gestartet.
Das Funktioniert auch wunderbar mit Barcode Scannern.
Insgesamt funktioniert fast alles im Programm - ich verwende es auch bereits.
Eine Sache klappt nicht immer:
Das ArticleDGV links und die Labels zur Anzeige der Artikeldaten in der Mitte sind beide an die gleiche ArticleBindingSource gebunden.
Wenn nun mit der EAN Code Suche ein EAN Code gefunden wurde, werden die Labels korrekt aktualisiert (es wird der richtige Artikel angezeigt).
Allerdings wird im DGV (welche an der gleichen BindingSource hängt) nur manchmal der gefundene Artikel angezeigt.
Ich habe noch nicht herausgefunden, wann eine Änderung der Selektion erfolgt und wann nicht.
Also Beispiel am Bild "Dose Cola" ist selektiert.
Suche ich nun den EAN Code von Kiste Fanta, werden in den Labels die Infos von "Kiste Fanta" angezeigt, im DGV bleibt aber "Dose Cola" ausgewählt.
Hier soll natürlich auch Kiste Fanta dann ausgewählt sein. Der Rest funktioniert aber alles - Menge wird dem richtigen Artikel zugewiesen.
So sieht die EAN Suche aus:
VB.NET-Quellcode
- Private Ean As String
- Private Sub frmNewOrder_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
- If TBSearch.Focused Or TBAmount.Focused Then Exit Sub
- Dim number As Integer
- If Integer.TryParse(e.KeyChar, number) Then
- Ean &= number.ToString
- Else
- Ean = ""
- End If
- End Sub
- Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
- Dim strchar As String = keyData.ToString
- Select Case keyData
- Case Keys.Return
- If Not Ean Is Nothing Then StartEANSearch()
- Return True
- End Select
- Return MyBase.ProcessCmdKey(msg, keyData)
- End Function
- Private Sub StartEANSearch()
- Dim Settingsrow = DirectCast(DirectCast(SettingsBindingSource.Current, DataRowView).Row, DtsSettings.SettingsRow)
- Dim SearchEAN8 = Settingsrow.SearchEAN8
- Dim SearchEAN12 = Settingsrow.SearchEAN12
- Dim SearchEAN13 = Settingsrow.SearchEAN13
- Dim EAN8 = ""
- Dim EAN12 = ""
- Dim EAN13 = ""
- 'Ean Codes für EAN 13 zusammenbauen
- If SearchEAN13 AndAlso Ean.Length > 12 Then
- If Ean.Length > 13 Then
- EAN13 = Ean.Substring(0, 13) 'EAN auf 13 Zeichen runtertrimmen
- Else
- EAN13 = Ean
- End If
- End If
- 'Nach EAN13 suchen - und Sub verlassen, wenn gefunden
- If EANSearch(EAN13) Then
- Changecategory()
- Ean = ""
- If AutoIncrement Then AddAmount()
- Exit Sub
- End If
- 'EAN12 zusammenbauen
- If SearchEAN12 AndAlso Ean.Length > 11 Then
- If Ean.Length > 12 Then
- EAN12 = Ean.Substring(0, 12)
- Else
- EAN12 = Ean
- End If
- End If
- 'EAN12 suchen
- If EANSearch(EAN12) Then
- Changecategory()
- Ean = ""
- If AutoIncrement Then AddAmount()
- Exit Sub
- End If
- 'EAN8 zusammenbauen
- If SearchEAN8 AndAlso Ean.Length > 7 Then
- If Ean.Length > 8 Then
- EAN8 = Ean.Substring(0, 8)
- Else
- EAN8 = Ean
- End If
- End If
- 'EAN8 suchen
- If EANSearch(EAN8) Then
- Changecategory()
- Ean = ""
- If AutoIncrement Then AddAmount()
- Exit Sub
- End If
- Dim Messageform As New frmMessage
- With Messageform
- .SetDisplayText = "Ean Code " & Ean & " wurde nicht gefunden."
- .SetDisplayTime = 1
- .SetAutoClose = True
- .ShowDialog()
- End With
- Ean = ""
- End Sub
- Private Function EANSearch(EAN As String) As Boolean
- Dim Position = ArticleBindingSource.Find(DtsSettings.Article.EANColumn.ColumnName, EAN)
- If Position = -1 Then Return False
- ArticleBindingSource.Position = Position
- Return True
- End Function
Ich kann gerne auch die Solution hochladen, wenn der gepostete Code nicht reicht.
Allerdings schaffe ich es nicht das ganze in einer DemoApp abzubilden, weil dies ein riesenaufwand ist. Ich müsste also das Originalprogramm hochladen mit massig Code drumherum.
Wenns nötig ist mach ich das natürlich und separiere den relevanten Code in einem Modul oder sowas.
Und ein weiteres Problem habe ich mit dem Programm.
Das ganze sieht unsagbar scheiße aus. Vorallem die Bestände / Bestellungen Geschichte funktioniert zwar - ist aber wenig praktikabel.
Solange es an den gleichen Daten Bestellungen und Bestände gibt ist es OK und noch halbwegs überscihtlich.
Wenn es aber mehr Bestände oder Bestellungen gibt, also die Daten nicht schön nebeneinander stehen, wird das ganze sehr unübersichtlich.
Wie würdet ihr das ganze optisch abbilden?