Stücklisten-Schnellerstellung

Allgemeine Erklärung

Für die sinnvolle Verwendung des Moduls 'Fertigung (PPS)' können Artikel mit Fertigungs-Stücklisten versehen werden. Der folgende Code stellt dafür eine sehr schnelle und einfache Möglichkeit zur Verfügung. Die Registerkarte 'Stückliste-Fertigung' wird dazu um eine DoubleBox für die Menge und eine TextBox für die Artikelnummer ergänzt. Es wird dann schnell hintereinander die Menge sowie eine Artikelnummer eingegeben und mit Enter wird die Stücklisten-Position angelegt. Danach springt der Cursor wieder in die Menge für den nächsten Artikel. Mit 'Tabulator' oder 'Enter' kann von der Menge in die Artikelnummer-Eingabe gewechselt werden. Eine Eingabe ist nur im Änderungs-Modus möglich.

Menge und Artikelnummer

VB.NET SDK-Programmcode

  

#Region " TriggerFormFramework_NachLoad-Ereignis " 

        Private Sub TriggerFormFramework_NachLoad(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.NachLoad 

                '>>> A R T I K E L  

                If TypeOf sender Is ArtikelFRM Then 

                    Dim artFRM As ArtikelFRM 

                    artFRM = CType(sender, ArtikelFRM

                    '>>> Artikelfenster anpassen 

                    ArtikelfensterAnpassen(artFRM) 

                End If 

        End Sub 

#End Region 

 

#Region " Private Sub: ArtikelfensterAnpassen ( Artikel-Fenster um Steuerelemente ergänzen etc. ) " 

        Private Sub ArtikelfensterAnpassen(ArtFRM As ArtikelFRM

                                '>>> DoubleBox Menge 

                Dim doubleBoxMenge As New EwaDoubleBox 

                doubleBoxMenge.Name = "A_DoubleBoxMenge" 

                doubleBoxMenge.Width = 60 

                doubleBoxMenge.Left = ArtFRM.Ewa1zuNStücklistenFertigung.Button1.Left + 160 

                doubleBoxMenge.Top = ArtFRM.Ewa1zuNStücklistenFertigung.Button1.Top + 2 

                ArtFRM.Ewa1zuNStücklistenFertigung.Button1.Parent.Controls.Add(doubleBoxMenge) 

                doubleBoxMenge.BringToFront() 

                doubleBoxMenge.EwaNachkommastellen = 3 

                doubleBoxMenge.EwaReadOnly = True 

                AddHandler doubleBoxMenge.PreviewKeyDown, AddressOf FocusAufArtikelnummer 

                '>>> TextBox Artikelnummer 

                Dim textboxArtikelnummer As New EwaTextBox 

                textboxArtikelnummer.Name = "A_TextBoxArtikelnummer" 

                textboxArtikelnummer.Width = 160 

                textboxArtikelnummer.Left = doubleBoxMenge.Left + doubleBoxMenge.Width + 6 

                textboxArtikelnummer.Top = doubleBoxMenge.Top 

                ArtFRM.Ewa1zuNStücklistenFertigung.Button1.Parent.Controls.Add(textboxArtikelnummer) 

                doubleBoxMenge.BringToFront() 

                textboxArtikelnummer.Tag = doubleBoxMenge 

                textboxArtikelnummer.EwaReadOnly = True 

                AddHandler textboxArtikelnummer.PreviewKeyDown, AddressOf StücklistenPosErgänzen 

                doubleBoxMenge.Tag = textboxArtikelnummer 

                '>>> Ereignis, damit beim Verlassen und Betreten des Änderungsmodus auch ReadOnly für die Steuerelemente ohne Datenbindung gesetzt wird 

                AddHandler ArtFRM.TextBoxArtikelNummer.EwaReadOnlyChanged, AddressOf MengeUndArtikelNrEinstellen 

        End Sub 

#End Region 

 

#Region " Private Sub: MengeUndArtikelNrEinstellen ( Readonly setzen an Menge und Artikelnummer ) " 

        Private Sub MengeUndArtikelNrEinstellen(sender As Object, e As System.EventArgs

                Dim artFRM As ArtikelFRM 

                Dim textBoxArtikelnummerEwa As EwaTextBox 

                textBoxArtikelnummerEwa = CType(sender, EwaTextBox

                artFRM = CType(textBoxArtikelnummerEwa.FindForm, ArtikelFRM

                Dim doubleBoxMenge As EwaDoubleBox 

                doubleBoxMenge = CType(artFRM.Ewa1zuNStücklistenFertigung.Button1.Parent.Controls("A_DoubleBoxMenge"), EwaDoubleBox

                Dim textboxArtikelnummer As EwaTextBox 

                textboxArtikelnummer = CType(artFRM.Ewa1zuNStücklistenFertigung.Button1.Parent.Controls("A_TextBoxArtikelnummer"), EwaTextBox

                If textBoxArtikelnummerEwa.EwaReadOnly Then 

                    doubleBoxMenge.EwaReadOnly = True 

                    textboxArtikelnummer.EwaReadOnly = True 

                Else 

                    doubleBoxMenge.EwaReadOnly = False 

                    textboxArtikelnummer.EwaReadOnly = False 

                End If 

        End Sub 

#End Region 

 

#Region " Private Sub: FocusAufArtikelnummer ( Fokus in Artikelnummer setzen ) " 

        Private Sub FocusAufArtikelnummer(sender As Object, e As System.Windows.Forms.PreviewKeyDownEventArgs

                '>>> Bei ENTER 

                If e.KeyCode = Keys.Enter Then 

                    Dim doubleBoxMenge As EwaDoubleBox 

                    doubleBoxMenge = CType(sender, EwaDoubleBox

                    Dim textboxArtikelnummer As EwaTextBox 

                    textboxArtikelnummer = CType(doubleBoxMenge.Tag, EwaTextBox

                    textboxArtikelnummer.Focus() 

                End If 

        End Sub 

#End Region 

 

#Region " Private Sub: StücklistenPosErgänzen ( Stücklisten-Position an Artikel ergänzen ) " 

        Private Sub StücklistenPosErgänzen(sender As Object, e As System.Windows.Forms.PreviewKeyDownEventArgs

                Dim menge As Double 

                Dim artikelPosNummer As String 

                Dim artikelGUID, artikelPosGUID As Guid 

                Dim tmpReihenfolge As Integer 

                '>>> Bei ENTER 

                If e.KeyCode = Keys.Enter Then 

                    Dim textboxArtikelnummer As EwaTextBox 

                    textboxArtikelnummer = CType(sender, EwaTextBox

                    Dim artFRM As ArtikelFRM 

                    artFRM = CType(textboxArtikelnummer.FindForm, ArtikelFRM

                    Dim doubleBoxMenge As EwaDoubleBox 

                    doubleBoxMenge = CType(textboxArtikelnummer.Tag, EwaDoubleBox

                    artikelGUID = artFRM.AktuelleGUID 

                    If artikelGUID = Guid.Empty Then 

                        '>>> E X I T 

                        Exit Sub 

                    End If 

                    If doubleBoxMenge.Text.Trim = "" OrElse C.ToDoubleX(doubleBoxMenge.Text) = 0 Then 

                        '>>> E X I T 

                        Exit Sub 

                    End If 

                    menge = C.ToDoubleX(doubleBoxMenge.Text) 

                    artikelPosNummer = textboxArtikelnummer.Text 

                    If artikelPosNummer.Trim = "" Then 

                        '>>> E X I T 

                        Exit Sub 

                    End If 

                    Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB 

                    artikelPosGUID = C.ToGuidX(tmpDBZ.HoleFeld(TBL.Artikel.GUID, TBL.Artikel.TBL, TBL.Artikel.ArtikelNummerVC, artikelPosNummer)) 

                    If artikelPosGUID = Guid.Empty Then 

                        FktF.Meldung("Artikel '" & artikelPosNummer & "' nicht gefunden.", artFRM) 

                        '>>> E X I T 

                        Exit Sub 

                    End If 

                    Dim tmpsql As String 

                    '>>> Max-Wert der Reihenfolge holen: 

                    tmpsql = "SELECT TOP 1 " & TBL.Stücklisten.ReihenfolgeINT & " FROM " & TBL.Stücklisten.TBL & _ 

                             " WHERE (" & TBL.Stücklisten.ArtikelGUID & " = '" & artikelGUID.ToString & "')" & _ 

                             " ORDER BY " & TBL.Stücklisten.ReihenfolgeINT & " DESC " 

                    tmpReihenfolge = C.ToIntegerX(tmpDBZ.HoleErsteZeileErsteSpalte(tmpsql)) + 1 

                    '>>> INSERT: 

                    tmpDBZ.LöscheFelder() 

                    tmpDBZ.AddFelder(TBL.Stücklisten.ArtikelGUID, artikelGUID, EwaSQL.UniqueIdentifier) 

                    tmpDBZ.AddFelder(TBL.Stücklisten.ArtikelPositionGUID, artikelPosGUID, EwaSQL.UniqueIdentifier) 

                    tmpDBZ.AddFelder(TBL.Stücklisten.MengeDBL, menge, EwaSQL.Float) 

                    tmpDBZ.AddFelder(TBL.Stücklisten.MengenFaktorDBL, 1, EwaSQL.Float) 

                    tmpDBZ.AddFelder(TBL.Stücklisten.ReihenfolgeINT, tmpReihenfolge, EwaSQL.Integer) 

                    tmpDBZ.AddFelder(TBL.Stücklisten.PositionsKennungVC, tmpReihenfolge.ToString & "0", EwaSQL.NVarChar) 

                    tmpDBZ.InsertDatensatz(TBL.Stücklisten.TBL) 

                    artFRM.Ewa1zuNStücklistenFertigung.AktualisiereDataGrid() 

                    textboxArtikelnummer.Text = "" 

                    doubleBoxMenge.Text = "" 

                    doubleBoxMenge.Focus() 

                End If 

        End Sub 

#End Region 

Beratung erwünscht?

Gerne können Sie mich oder einen mein­er freund­lichen Kollegen telefonisch er­reichen:  +49 2161 277 680

Alter­na­tiv schrei­ben Sie uns an  info@it-easy.de oder nutz­en Sie das nach­folgende Kontakt­formular.

Ihr Ralf Jasper
Kundenservice

Mitarbeiterfoto von Herrn Ralf Jasper


Rückruf-Service

Für eine möglichst unkomplizierte Kontaktaufnahme füllen Sie bitte das unten stehende Formular aus und klicken auf „Rückruf anfordern“.