Tipps & Tricks - Eingabe auf einen Datensatz beschränken
Eine sichere und elegante Lösung, die Eingabe von Datensätzen auf einen Datensatz zu beschränken, bietet die bedingte Anzeige von Schaltflächen. Hier kann eine Prüfbedingung hinterlegt werden, die serverseitig ausgeführt wird und die Schaltfläche in Abhängigkeit des Prüfergebnisses ein- bzw. ausblendet. Damit Sie die bedingte Anzeige der Schaltfläche konfigurieren können, sollten Sie vorab die Expertenoptionen aktivieren.
Ausblenden der Schaltfläche bei einem vorhandenen Datensatz
Legen Sie auf einer beliebigen Applikationsseite eine Schaltfläche an. Öffnen Sie den Eigenschaftendialog. Aktivieren Sie auf dem Reiter "Allgemein" unter Optionen die Einstellung Bedingte Anzeige.
Klicken Sie auf "Bedingung bearbeiten" und tragen Sie im Velocity-Editor das folgende Skript ein:
#set($show_buttoncontrol3A451A26 = false)
## Get number of records
#set($l_statement = $PreparedQuery.prepare($DbConnection, "SELECT COUNT(*) FROM XDATAGROUP00D1A2185"))
#set($l_recordCount = $l_statement.executeAndGetScalarValue(0))
$l_statement.close()
#if($l_recordCount == 0)
#set($show_buttoncontrol3A451A26 = true)
#end
Das Skript führt ein SQL-Statement aus, das prüft, wie viele Datensätze in der Datengruppe vorhanden sind. Ist kein Datensatz vorhanden, wird die Schaltfläche angezeigt. Ersetzen Sie im Skript den Namen der Schaltfläche (buttoncontrol3A451A26) mit dem Namen Ihrer Schaltfläche. Diesen Namen können Sie im Editor im Bereich Applikationsstruktur ermitteln. Ersetzen Sie auch den Namen der Datengruppe (XDATAGROUP00D1A2185) mit dem Namen Ihrer Datengruppe. Schließen Sie den Editor mit Klick auf "OK". Schließen Sie auch den Eigenschaftendialog der Schaltfläche mit Klick auf "OK". Speichern Sie die Applikation. Wenn Sie die Applikation nun im Browser öffnen, wird die Schaltfläche ausgeblendet, sobald ein Datensatz in der Applikation in der entsprechenden Datengruppe erfasst ist.
Benutzerabhängiges Ausblenden der Schaltfläche bei einem vorhandenen Datensatz
Mit diesem Beispiel kann jeder Benutzer genau einen Datensatz anlegen. Gehen Sie dazu genauso vor wie im ersten Beispiel. Fügen Sie statt des Skripts aus dem ersten Beispiel das hier folgende Skript ein:
#set($show_buttoncontrol3A451A26 = false)
## Get number of records
#set( $l_statement = $PreparedQuery.prepare($DbConnection, "SELECT COUNT(*) FROM XDATAGROUP00D1A2185 WHERE LUSERIDINSERT = ?"))
$l_statement.setInt(1, $User.getId())
#set( $l_recordCount = $l_statement.executeAndGetScalarValue(0))
$l_statement.close()
#if($l_recordCount == 0)
#set($show_buttoncontrol3A451A26 = true)
#end
Ersetzen Sie auch hier den Namen der Schaltfläche und Datengruppe mit dem Namen Ihrer Schaltfläche und Datengruppe.