In diesem Beitrag wird gezeigt, wie vor dem Speichern verhindert werden kann,
dass bestimmte Werte wie z.B. E-Mail-Adressen oder Titel doppelt erfasst werden.
Klicken Sie OK und speichern Sie die Applikation
mit der Tastenkombination STRG + S.
Ordnen Sie die Applikation in der Menüstruktur des Portals ein und öffnen Sie
sie dann im Browser.
Geben Sie auf der Eingabeseite die Titel
Titel 1
Titel 2
Titel 2
ein.
2. Datei custom.js anpassen
Für die Anpassung der custom.js führen Sie bitte folgende
Schritte durch:
Wechseln Sie in das Portalverzeichnisexternal/htmlroot/include/custom.
Öffnen Sie die Datei sample.js mit einem Text-Editor (z.b. Notepad ++).
Kopieren Sie die Javascript-Funktion checkUpForDatabaseConflictBySysidentAndObject.
Schließen Sie die Datei wieder.
Öffnen Sie die Datei custom.js im selben Verzeichnis und fügen Sie die zuvor
kopierte Javascript-Funktion hier ein. Speichern Sie die Datei.
3. GetconflictBySysidentAndObject.vm ersetzen
Für die Anpassung der custom.js führen Sie bitte folgende
Schritte durch:
Kopieren Sie die Datei getconflictBySysidentAndObject.vm.
Wechseln Sie in das Portalverzeichnisinternal/system/vm/html/misc und fügen Sie die kopierte VM-Datei
hier ein. Falls die Datei hier schon vorhanden ist, ersetzen Sie diese bitte.
Bitte beachten Sie, dass eventuell vorhandene Anpassungen in der
getconflictBySysidentAndObject.vm in Ihrem
Portalverzeichnis
beim Ersetzen verloren gehen.
4. Sysident anlegen
Für das Datenbankfeld Titel, das in unserem Beispiel
geprüft werden sollen, wird nun ein in der Datengruppe eindeutiger
sysident vergeben. Blenden Sie dazu in der Applikationsstruktur die Datenfelder
der Datengruppe über das Kontextmenü ein.
Öffnen Sie den Eigenschaftendialog des Titel-Datenbankfeldes mit einem Doppelklick
und wechseln Sie dort auf den Reiter Expert. Wenn dieser
Reiter nicht sichtbar ist, aktivieren Sie bitte noch die
Optionen für Experten.
Klicken Sie hier auf
Attribut hinzufügen. Tragen Sie in der Spalte
Attribut das Attribut sysident
und in der Spalte Wert einen innerhalb der Datengruppe
eindeutigen Namen für das Attribut (z.B. my_title) ein.
Bitte beachten Sie die Kleinschreibung beim Attribut sysident.
Klicken Sie OK.
5. JavaScript verfassen
Wechseln Sie nun auf die Eingabeseite und öffnen Sie den Eigenschaftendialog der
OK-Schaltfläche, die den Datensatz speichert, mit einem Doppelklick.
Wechsen Sie auf den Reiter Skript
und klicken Sie dort auf
JavaScript für Desktop bearbeiten.
Kopieren Sie das hier folgende Skript in den Skript-Editor.
function checkTitle()
{
var l_oCheckUpResult = checkUpForDatabaseConflictBySysidentAndObject("Name des Sysidents", getElement("GUID des Eingabefeldes"), false);
if(l_oCheckUpResult.bError)
{
alert("Es ist ein Fehler aufgetreten!\n"+l_oCheckUpResult.iErrorId+": " + l_oCheckUpResult.strErrorDesc)
}
else
{
if(l_oCheckUpResult.bConflict)
{
// ein Konflikt ist aufgetreten
// Möglichkeit 1: Mitteilung an Benutzer, dass Datensatz nicht gespeichert werden kann und Abbruch des Speichernvorgangs mit return false;
//alert("Dieser Titel ist bereits angelegt!")
//return false;
// Möglichkeit 2: beim Benutzer nachfragen, ob trotzdem gespeichert werden soll
Check = confirm("Dieser Titel ist bereits angelegt!\nTrotzdem speichern?");
if(Check)
return true;
else
return false;
}
else
{
// es sind keine Konflikte aufgetreten
return true;
}
}
return false;
}
In der Zeile
var l_oCheckUpResult = checkUpForDatabaseConflictBySysidentAndObject("Name des Sysidents", getElement("GUID des Eingabefeldes"), false);
muss nun noch der Name des Sysidents (in unserem Beispiel my_title) und die
GUID des Eingabefeldes eingesetzt werden.
Die GUID des Eingabefeldes Titel können Sie ganz einfach ermitteln, wenn Sie im
rechten Bereich des Editors auf den Reiter Applikationsstruktur wechseln. Die
Ebenen der Struktur unterhalb der Eingabeseite können mit Doppelklick eingeblendet werden. In der
Formgroup finden Sie das Eingabefeld Titel.
Im unteren Bereich wird nun unter anderem auch die GUID des Eingabefeldes eingblendet. Mit einem Klick
auf GUID einfügen wird die GUID an
der im Editor markierten Stelle eingefügt.
Klicken Sie OK.
Hier kann die JavaScript-Function nun dem Schaltflächen-Ereignis onclick
zugeordnet werden. Klicken Sie dazu auf
Skriptaufruf hinzufügen.
Klicken Sie nach der Zuordnung auf OK.
Klicken Sie auch hier auf OK und speichern Sie die Applikation.
Wird nun ein Titel im Browser doppelt angelegt, erhält der Anwender eine entsprechende Meldung.
Bitte beachten Sie, dass diese Konfliktabprüfung nur funktioniert, wenn die entsprechenden
Datensätzen nicht im selben Millisekunden-Bereich angelegt werden.