"Anrede" und "Briefanrede" automatisch generieren (AGGenderCheck Modul)
Problem:
Bei unvollständigen Daten kann es vorkommen, dass die Anrede (Frau, Herr) und Briefanrede ("Sehr geehrte XY,") nicht vorhanden sind.
Dies kann in der Regel nur durch eine manuelle Bearbeitung aufbereitet werden.
Lösung:
Mit dem AGGenderCheck Modul kann die Aufbereitung automatisiert durch einen Makro umgesetzt werden z.B. durch einen Hintergrundprozess, Button oder Makro beim Laden.
Installation:
Das Modul gehört zur Auslieferung von AG-VIP, daher muss außer dem Makro nichts zusätzlich installiert werden. Das Feld "Gender" muss angelegt werden - und das als Kennzeichenfeld mit den Werten "M" und "W".
Verwendung:
Öffnen Sie den Makro-Editor an beliebiger Stelle (Ansicht, Button, beim Verlassen eines Felds...) und fügen Sie den Code ein.
Ablauf:
Das Makro prüft, ob ein Titel vorhanden ist, bestimmt die Anrede (Herr oder Frau) basierend auf dem Geschlecht und erstellt die Anrede-Zeichenkette.
Wenn die Gender-Prüfung aktiviert ist, überprüft das Makro den Vornamen in einer Datenbank, aktualisiert die Anrede und das Geschlecht basierend auf dem Ergebnis.
Die Option "DisableGenderCheck" ermöglicht die Deaktivierung der Gender-Prüfung, falls gewünscht.
Makro:
' Zweck: Bestimme Anrede und Briefanrede durch Geschlecht und Vornamen
' Autor: Marko
' Datum: 06.11.2023
' Notiz: Das Makro besteht aus zwei Teilen.
'
' Der erste Teil befüllt das Feld "Anrede" (NameSalutation) mit "Herr" oder "Frau" abhängig davon, was in dem Kennzeichenfeld "Gender" ausgewählt wurde.
' Der zweite Teil nutzt das GenderCheck Modul und vergleicht den Vornamen mit dem Inhalt einer Namensdatenbank.
'
' Bsp.: Feld "NameFirst" ist "Michael" - das Makro schaut in die Datenbank und sieht, dass der Name "Michael" fast immer dem Geschlecht "M" gehört. Dementsprechend werden die
' Felder gefüllt und die Anreden generiert.
Sub GenAnrede()
' ----------------------------------------------
' Um die Anredegenerierung durch Vornamen auszuschalten, setzen Sie die Variable auf True
DisableGenderCheck = False
' ----------------------------------------------
'MAKRO 1 (GENDERCHECK)
'Wenn es einen Titel gibt ("Dr." usw.)
If ActiveAddress.Fields("NameTitle").Value <> "" Then
Select Case ActiveAddress.Fields("Gender").Value
'Männlich'
Case "M"
ActiveAddress.Fields("NameSalutation").Value = "Herr"
ActiveAddress.Fields("Salutation").Value = "Sehr geehrter Herr " & ActiveAddress.Fields("NameTitle").Value & " " & ActiveAddress.Fields("NameLast").Value & ","
'Weiblich'
Case "W"
ActiveAddress.Fields("NameSalutation").Value = "Frau"
ActiveAddress.Fields("Salutation").Value = "Sehr geehrte Frau " & ActiveAddress.Fields("NameTitle").Value & " " & ActiveAddress.Fields("NameLast").Value & ","
End Select
'Kein Titel
Else
Select Case ActiveAddress.Fields("Gender").Value
'Männlich'
Case "M"
ActiveAddress.Fields("NameSalutation").Value = "Herr"
ActiveAddress.Fields("Salutation").Value = "Sehr geehrter Herr " & ActiveAddress.Fields("NameLast").Value & ","
'Weiblich'
Case "W"
ActiveAddress.Fields("NameSalutation").Value = "Frau"
ActiveAddress.Fields("Salutation").Value = "Sehr geehrte Frau " & ActiveAddress.Fields("NameLast").Value & ","
End Select
End If
'MAKRO 2 (GENDERCHECK)
If DisableGenderCheck = False And ActiveRecord.Fields("NameFirst").Value <> "" Then
' Falls kein Länderkürzel vorhanden, wird als Standard "DEU" verwendet
Dim strCountry
If ActiveRecord.Fields("Country").Value <> "" Then
strCountry = ActiveRecord.Fields("Country").Value
Else
strCountry = "DEU"
End If
Dim oGenderCheck
' Erzeugen des AGGenderCheck Objektes
Set oGenderCheck = CreateObject("AGGenderCheck.Checker")
' Für die Bearbeitung muss die Adresse gesperrt werden (Schreibzugriff)
If ActiveRecord.Lock Then
Dim strResult
' Aufruf der GetGender Funktion um die Anrede zu ermitteln
strResult = oGenderCheck.GetGender(CStr(ActiveRecord.Fields("NameFirst").Value), CStr(strCountry))
Select Case strResult
Case "W", "w"
' weiblicher Name
If ActiveRecord.Fields("NameSalutation").Value <> "Frau" Then
ActiveRecord.Fields("NameSalutation").Value = "Frau"
If ActiveAddress.Fields("NameTitle").Value <> "" Then
ActiveAddress.Fields("Salutation").Value = "Sehr geehrte Frau " & ActiveAddress.Fields("NameTitle").Value & " " & ActiveAddress.Fields("NameLast").Value & ","
Else
ActiveAddress.Fields("Salutation").Value = "Sehr geehrte Frau " & ActiveAddress.Fields("NameLast").Value & ","
End If
ActiveRecord.Fields("Gender").Value = "W"
End If
Case "M", "m"
' männlicher Name
If ActiveRecord.Fields("NameSalutation").Value <> "Herr" Then
ActiveRecord.Fields("NameSalutation").Value = "Herr"
If ActiveAddress.Fields("NameTitle").Value <> "" Then
ActiveAddress.Fields("Salutation").Value = "Sehr geehrter Herr " & ActiveAddress.Fields("NameTitle").Value & " " & ActiveAddress.Fields("NameLast").Value & ","
Else
ActiveAddress.Fields("Salutation").Value = "Sehr geehrter Herr " & ActiveAddress.Fields("NameLast").Value & ","
End If
ActiveRecord.Fields("Gender").Value = "M"
End If
End Select
End If
Set oGenderCheck = Nothing
End If
End Sub
GenAnrede()