TriggerDatenLayer

DeleteDatensatz

Dieser Trigger wird in der Klasse 'SQLServerZugriff' bei jedem Löschen eines Datensatzes zweimal ausgelöst, zunächst einmal vor dem eigentlichen Löschen und anschließend danach erneut. Über das EventArg 'e.VorAusführung' kann dieser Umstand ausgelesen werden. Die weiteren EventArgs sind TabellenName, DatensatzGUID und DatenbankZeit, der Sender ist der aktuelle SQLServerZugriff.

InsertDatensatz

Dieser Trigger wird in der Klasse 'SQLServerZugriff' bei jedem Einfügen eines neuen Datensatzes zweimal ausgelöst, zunächst einmal vor dem eigentlichen Einfügen und anschließend danach erneut. Über das EventArg 'e.VorAusführung' kann dieser Umstand ausgelesen werden. Die weiteren EventArgs sind TabellenName, DatensatzGUID, DatenbankZeit und ParameterListe, der Sender ist der aktuelle SQLServerZugriff.

Im unteren Beispiel werden bestimmte Werte, in diesem Fall Individual-Variablen, immer dann gezielt eingestellt, wenn ein Auftrag neu erstellt wird. Dies wird immer ausgeführt, unabhängig davon, durch welche Aktion der Auftrag entsteht, da diese Codestelle bei jedem Einfügen einer neuen Datenzeile in die Vorgangs-Tabelle durchlafuen wird.

VB.NET SDK-Programmcode

  

#Region " TriggerDatenLayer_InsertDatensatz-Ereignis " 

        Private Sub TriggerDatenLayer_InsertDatensatz(ByVal sender As Object, ByVal e As DatenLayerEventArgs) Handles Me.InsertDatensatz 

                '>>> Nur vor dem Anlegen des Datensatzes und nur bei Tabelle 'Vorgang' 

                If e.VorAusführung AndAlso e.TabellenName = TBL.Vorgang.TBL Then 

                    Dim istAuftragJN = False 

                    Dim istBelegVersion0JN As Boolean = False 

                    Dim parameter As IteParameter 

                    '>>> Alle Spalten-Werte durchlaufen, die gleich in der Datenbank angelegt werden sollen 

                    For Each parameter In e.ParameterListe 

                        '>>> Nach Spalte 'BelegTyp' suchen und auf 'Auftrag' prüfen 

                        If parameter.ParameterName = "@" & TBL.Vorgang.BelegTypGUID AndAlso C.ToStringX(parameter.ParameterWert) <> "" Then 

                            If C.ToStringX(parameter.ParameterWert) = BT.VkAuftrag Then 

                                istAuftragJN = True 

                            End If 

                        End If 

                        '>>> Nach Spalte 'ÄnderungsIndex' suchen und auf 0 prüfen 

                        If parameter.ParameterName = "@" & TBL.Vorgang.ÄnderungsIndexINT Then 

                            If C.ToIntegerX(parameter.ParameterWert) = 0 Then 

                                istBelegVersion0JN = True 

                            End If 

                        End If 

                    Next 

                    '>>> Beenden, wenn Beleg nicht der richtige ist 

                    If Not istAuftragJN OrElse Not istBelegVersion0JN Then 

                        '>>> E X I T 

                        Exit Sub 

                    End If 

                    '>>> Erneuter Durchlauf, wenn passender Beleg, jetzt Werte anpassen 

                    '>>> Achtung: Integer, BigInt und Bit bitte nie auf NULL setzen 

                    For Each parameter In e.ParameterListe 

                        If parameter.ParameterName = "@" & "IndVarMeineTextSpalte" Then 

                            '>>> Neuen Wert bestimmen 

                            parameter.ParameterWert = "xxx" 

                        End If 

                        If parameter.ParameterName = "@" & "IndVarMeineTextSpalte2" Then 

                            '>>> Neuen Wert ist NULL 

                            parameter.ParameterWert = DBNull.Value 

                        End If 

                        If parameter.ParameterName = "@" & "IndVarMeineIntegerSpalte" Then 

                            '>>> Neuen Wert ist 0 

                            parameter.ParameterWert = 0 

                        End If 

                    Next 

                End If 

        End Sub 

#End Region

UpdateDatensatz

Dieser Trigger wird in der Klasse 'SQLServerZugriff' bei jedem Ändern eines Datensatzes zweimal ausgelöst, zunächst einmal vor dem eigentlichen Ändern und anschließend danach erneut. Über das EventArg 'e.VorAusführung' kann dieser Umstand ausgelesen werden. Die weiteren EventArgs sind TabellenName, DatensatzGUID, DatenbankZeit und ParameterListe, der Sender ist der aktuelle SQLServerZugriff.

Im unteren Beispiel wird eine Individual-Variable am Artikel mit dem aktuellen Zeitpunkt (Datum und Uhrzeit) gefüllt, wenn der neutrale VK-Preis auf beliebige Art und Weise geändert wird.

VB.NET SDK-Programmcode

  

#Region " TriggerDatenLayer_UpdateDatensatz-Ereignis " 

        Private Sub TriggerDatenLayer_UpdateDatensatz(sender As Object, e As DatenLayerEventArgs) Handles Me.UpdateDatensatz 

                If e.VorAusführung AndAlso e.TabellenName = TBL.Artikel.TBL Then 

                    '>>> Prüfen, ob der Preis enthalten ist, also verändert wurde 

                    Dim parameter As IteParameter 

                    Dim preisVKgefunden As Boolean 

                    For Each parameter In e.ParameterListe 

                        If parameter.ParameterName = "@" & TBL.Artikel.PreisVKDBL Then 

                            preisVKgefunden = True 

                        End If 

                    Next 

                    '>>> Wenn Preis gefunden wurde, dann Geändert-Datum setzen 

                    If preisVKgefunden Then 

                        '>>> sender in SQL-Server-Zugriff umwandeln 

                        Dim tmpDBZ As SQLServerZugriff = CType(sender, SQLServerZugriff

                        '>>> Prüfen, ob das Datums-Feld schon drin ist, ansonsten hinzufügen 

                        For Each parameter In e.ParameterListe 

                            If parameter.ParameterName = "@IndVarPreisGeändert" Then 

                                parameter.ParameterWert = SqlZeit.Now 

                                Exit Sub 

                            End If 

                        Next 

                        '>>> zu speicherndes Feld ergänzen 

                        tmpDBZ.AddFelder("IndVarPreisGeändert", C.ToDateTimeX(SqlZeit.Now), EwaSQL.DateTime) 

                    End If 

                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“.