Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > Schreiben auf bestimmte Datensätze unterbinden

Schreiben auf bestimmte Datensätze unterbinden

Hallo,

ich habe eine Tabelle, in der sowohl manuell generierte Datensätze als auch vom System generierte stehen. Die DS sind anhand eines Feldes einfach zu unterscheiden.

Nun möchte ich erreichen, dass die maschinell erstellten Daten nicht bearbeitet werden können.
Dazu könnte ich
a) entweder in der Tabelle aus der die Eingabeseite aufgerufen wird das Icon (Spalte) ausblenden/deaktivieren
b) auf der Eingabeseite den Datenfelfdern bein Rendern einen Schreibschutz verpassen.

Da ich das gern auf der Serverseite regeln möchte, sehe ich hier Velocity als Mittel der Wahl.

Für a) fehlt mir der Ansatz, mit dem ich auf das Datenfeld zur Abfrage zugreifen kann und für b) die info, wie ich den Schreibschutz auf die Kontrolle aktiviere...

für a) versuche ich gerade folgendes:


#set($type = $!VHHelper.getStringFromVH($drRecord.getValueHolderBySysident('STR_TYPE')))
#if($type=="system")
#set($show_imageactioncontrol9F2C0E12 = false)
#else
#set($show_imageactioncontrol9F2C0E12 = true)
#end


leider steht in dem Feld nix drin....


Vielleicht habt ihr ja noch einen dritten Ansatz attention
21.03.2016 14:57 von Frank Illner
Ich würde das entweder mit einem PageActionHandler(Groovy) oder mit einem Prozess lösen.
Im Prozess könnte man bspw. nach dem Datengruppenereignisbehandler eine Filter-Bedingung einbauen die auf das Feld prüft und nur wenn wahr geht der Prozess weiter, sonst muss ein Fehler ausgelöst werden, was z.B. wieder per Groovy-Skript geschehen könnte.
21.03.2016 16:19 von MartinW
Hallo Frank,

ich mutmaße jetzt mal, da nicht alles aus deiner Ausführung hervorgeht.

Das drRecord-Objekt (
Interface IRow
) kann nur auf Kontrollen der Tabelle (also Spalten) zugreifen, in freien Tabellen entsprechend auf platzierte Ansichtskontrollen.
Dein verwendeter Sysident
'STR_TYPE' muss also der Sysident einer Spalte der Tabelle sein. Ist dem so?
Falls nein, dann musst du das Datenfeld, in dem sich die Kennung befindet, als Spalte deiner Tabelle hinzufügen und blendest diese aus (Spalte > Optionen > Spaltendarstellung > Häkchen bei Ausblenden).
Dann kannst du auf den Wert der Spalte zugreifen, entweder mit
$drRecord.getValueHolder('<NameDerSpalte>').getValue() ## Spalte > Expert > Attribut 'name'
oder, falls du dieser Spalte einen Sysident (Expert > Attribut 'sysident') zuweisen möchtest
$drRecord.getValueHolderBySysident('STR_TYPE').getValue()

Der komplette Code zur Steuerung der bedingten Anzeige der Schaltflächenspalte, die auf die Eingabeseite verweist, könnte dann so aussehen:
#set( $l_type = $drRecord.getValueHolder('<NameDerSpalte>').getValue() )
#set( $show_imageactioncontrol9F2C0E12 = ($l_type != "system") )


Btw,
die von dir verwendete Silent-Notation (Ausrufe-Zeichen nach dem Dollar-Zeichen) macht in einer direkten Variablenzuweisung wenig Sinn. Nur wenn die Variable von Velocity gerendert werden muss, quasi ".toString()", dann greift die Silent-Notation und verhindert die Darstellung des Variablennamens, falls diese Null oder nicht gesetzt ist. Dies trifft auch dann zu, wenn die Variable innerhalb einer set-Zuweisung wiederum innerhalb eines Strings gerendert werden muss.
Beispiel:
## Annahme: $anotherValue == NULL

#set( $myValue = $!anotherValue )
## $myValue 'referenziert' $anotherValue, folglich $myValue == NULL

#set( $myValue = "$!anotherValue" )
## $myValue == "", da Silent-Notation innerhalb String

attention

Gruß
21.03.2016 21:29 von handw3rker
Danke erstmal, ich werde mir das heute mal zu Gemüte führen. attention

Meine Tabelle ist natürlich keine "freie Tabelle"... huh Ich werde mich an diesem Weg mal versuchen.
22.03.2016 06:26 von Frank Illner
danke für den exkurs zum Thema Silent-Notation. thumbup Ich bin noch neu im Intrexx-Umfeld und habe das eher nach "Gefühl" benutzt...
22.03.2016 08:30 von Frank Illner
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg