Ergänzen von Feldern in Original-Menüfunktionen

Allgemein ist es möglich, Original-Menüfunktionen von easyWinArt mit Hilfe des SDK um eigene datenbank-gestützte Felder zu erweitern, um zu jedem Datensatz zusätzliche Informationen abspeichern zu können oder z.B. diesen mit einem anderen bzw. mit mehreren anderen Datensätzen über Fremdschlüssel zu verknüpfen. Die hier beschriebenen Funktionalitäten setzen das SDK voraus und gehen über die Möglichkeiten von Individualvariablen hinaus, da eine Platzierung des Feldes theoretisch an einer beliebigen Stelle im Detailbereich möglich ist. Oft ist eine Platzierung auf einer eigenen Registerkarte sinnvoll.

In diesem Beispiel wird ein kleines Textfeld 'Status' unterhalb des Labels 'Firma' in der Beleg-Verwaltung eingefügt. Natürlich könnte dieses genauso gut auf einer eigenen Registerkarte dargestellt werden.

1. Tabelle in der Datenbank erweitern

Mit Hilfe des Management Studios navigieren Sie im Objekt-Explorer zur Daten-Datenbank des gewünschten Mandanten, z.B. 'easyWinArtMeierGmbH', darunter zur Tabelle der gewünschten Menüfunktion, in diesem Fall die Tabelle 'Vorgang', da das Feld in die Menüfunktion 'Vorgangs-Belege' eingefügt werden soll. Welche Tabelle die richtige ist, lässt sich im easyWinArt ganz oben rechts nach einem Klick auf die Erläuterungen zur aktuellen Menüfunktion einsehen. Klicken Sie mit rechts auf die Tabelle und dann auf den Kontextmenü-Eintrag 'Entwerfen'. Im rechts neu geöffneten Fenster lässt sich nun unterhalb der bereits vorhandenen Felder ein weiteres Feld ergänzen und definieren. Geben Sie einen Namen ein, der das Feld nicht mit den vorhandenen oder zukünftigen Feldern kollidieren lässt, z.B. 'A_Status'. Als Datentyp kommen in Frage:

  • uniqueidentifier (GUID, z.B. Primär-/ Fremdschlüssel)
  • bit (Häkchen Ja-Nein)
  • datetime (Datums- oder Uhrzeit-Felder)
  • float (Komma-Zahlen)
  • int (Ganztellige Zahlen)
  • nvarchar(MAX) (lange Texte)
  • nvarchar(100) (auf x Stellen begrenzte Texte)
  • varbinary(MAX) (Dateien / Bilder)
  • varbinary(10000) (begrenzte Dateien / Bilder)

In diesem Falle wählen wir nvarchar(20), unser Textfeld nimmt also maximal 20 Zeichen auf. Als dritte Einstellung kann definiert werden, ob das Feld ein Pflichtfeld ist, also nicht NULL sein darf. Wird kein Haken gesetzt, so kann ein Vorgang später nicht gespeichert werden, ohne dass der Anwender einen Text in das neue Feld eingibt, es erscheint eine entsprechende Meldung.

Besonderheit: Bei bit-Feldern muss immer der Haken nicht gesetzt sein und unten in den Spalteneigenschaften ist als Standardwert oder -bindung ((0)) einzustellen.

Jetzt wird das Tabellen-Layout mittels Speichern abgespeichert. Sollte dies nicht möglich sein, so muss im Menü 'Extras -> Optionen...' und dort im Punkt 'Designer' die Option 'Speichern von Änderungen verhindern, die die Neuerstellung der Tabelle erfordern' deaktiviert werden. Ein erneuter Speicherversuch sollte dann zum Erfolg führen.

2. Anlegen des Eintrages in Menue-Funktionen-Select

Um der Menüfunktion das neue Feld bekannt zu geben, und damit es in der Suchliste aufgeführt wird, starten Sie easyWinArt und öffnen Sie die Menüfunktion 'Entwicklung -> Werkzeuge -> Menue-Funktionen-Select', in der Suchmaske ist die gewünschte Menüfunktion einzugeben, in diesem Fall bei Anzeige 'Vorgangs-Belege' oder bei Funktionskennzeichen 'VOR'. Das Kennzeichen ist ebenfalls oben rechts in der entsprechenden Menüfunktion unter den Erläuterungen zur aktuellen Menüfunktion einzusehen, falls es nicht bekannt ist. Im neu geöffneten Fenster sind alle Spalten der Suchliste der Menüfunktion 'Vorgangs-Belege' enthalten.

Über 'Neu' kann jetzt ein neuer Eintrag ergänzt werden. Klicken Sie zuerst auf das blaue Wort 'Feld-Name' und wählen das soeben in der Datenbank angelegte neue Feld aus. Darunter wählen Sie den passenden Datentyp zum neuen Feld aus, bei Texten immer den Typ 'String' und nie den Typ 'Text', so also auch jetzt entsprechend 'String'. Darunter ist der Steuerelement-Typ auszuwählen, hier wäre das eine Textbox. Rechts oben bei Anzeige vergeben Sie einen Namen für das Feld, dieser wird dann als Spaltenüberschrift in der Suchliste verwendet. Soll die Oberfläche mehrsprachig sein, so lässt sich auch eine Textnummer hinterlegen. Diese ist aber vorher zusammen mit den mehrsprachigen Texten unter 'Entwicklung -> Sprachen -> Alle Sprachen SDK' anzulegen. In dem Fall wird nicht mehr der Text im Feld 'Anzeige', sondern der je nach gewählter Oberflächen-Sprache entsprechende Text als Spaltenüberschrift angezeigt. Speichern Sie jetzt den neuen Eintrag ab.

3. Anlage des neuen Feldes und Ergänzung der notwendigen Programmierungen

In diesem Fall wird das Feld programmiertechnisch erzeugt und auf dem Formular der Menü-Funktion 'Vorgänge' platziert. Dann ist die Datenbindung zu ergänzen, damit unser neues Steuerelement an die entsprechende Spalte in der Suchliste  gebunden wird und der Inhalt auch entsprechend aktualisiert und synchronisiert wird. Letztlich muss auch das Speichern programmiert werden, damit der Inhalt des neuen Steuerelementes beim Speichern des Datensatzes auch in die Datenbank weggespeichert wird. Letzteres wird über den Trigger 'SpeichernZusatzFelder' eingestellt.

VB.NET SDK-Programmcode: Beispiel

  

#Region " TriggerFormFramework_StartForm-Ereignis " 

        Private Sub TriggerFormFramework_StartForm(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.StartForm 

                '>>> Bei Menüfunktion  V o r g a n g 

                If TypeOf sender Is VorgangFRM Then 

                    Dim VorFRM As VorgangFRM 

                    VorFRM = CType(sender, VorgangFRM

                    Dim neueTextbox As New EwaTextBox 

                    neueTextbox.Width = 60 

                    neueTextbox.Name = "A_TextBoxStatus" 

                    neueTextbox.Left = 5 

                    neueTextbox.Top = 60 

                    neueTextbox.MaxLength = 20 

                    VorFRM.GroupBoxAdresse.Controls.Add(neueTextbox) 

                End If 

        End Sub 

#End Region 

 

#Region " TriggerFormFramework_DatenBindung-Ereignis " 

        Private Sub TriggerFormFramework_DatenBindung(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.DatenBindung 

                '>>> Bei Menüfunktion  V o r g a n g 

                If TypeOf sender Is VorgangFRM Then 

                    Dim VorFRM As VorgangFRM 

                    VorFRM = CType(sender, VorgangFRM

                    Dim tmpTextBox As EwaTextBox 

                    tmpTextBox = CType(VorFRM.GroupBoxAdresse.Controls("A_TextBoxStatus"), EwaTextBox

                    VorFRM.DatenBindung(tmpTextBox, TBL.Vorgang.TBL, "A_Status"

                End If 

        End Sub 

#End Region 

 

#Region " TriggerFormFramework_SpeichernZusatzFelder-Ereignis " 

        Private Sub TriggerFormFramework_SpeichernZusatzFelder(ByVal sender As Object, ByVal e As FormFrameworkZusatzEventArgs) Handles Me.SpeichernZusatzFelder 

                '>>> Bei Menüfunktion  V o r g a n g 

                If TypeOf sender Is VorgangFRM Then 

                    Dim VorFRM As VorgangFRM 

                    VorFRM = CType(sender, VorgangFRM

                    Dim tmpTextBox As EwaTextBox 

                    tmpTextBox = CType(VorFRM.GroupBoxAdresse.Controls("A_TextBoxStatus"), EwaTextBox

                    e.HauptDB.AddFelder("A_Status", tmpTextBox.Text, EwaSQL.NVarChar) 

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