Variablen, Funktionen, SetField - miebach/miclas-vic GitHub Wiki
Allgemein auslesbare Variablen:
- m_Benutzernummer
integer
(Gruppe läßt sich scheinbar nicht auslesen?) - m_strBenutzername
string
- m_bSuperuserJN
boolean
(0 oder 1) - m_lFunction
integer
Nur in den Triggertypen "Vor SQL-Update" und "Nach SQL-Updates" Hier kann der aktuelle Modus ausgelesen werden. 2 -> Ändern 3 -> Kopieren 9 -> Neu
siehe https://github.com/miebach/miclas-vic/wiki/Eigene-Funktionen
abs( x: Double : Double ) : Double
Ergibt den positiven Betrag von x.
round( x: Double) : Integer
Rundet auf oder ab zur naechsten ganzen Zahl.
sqr( x: Double [, y: Double ] ) : Double
Berechnet die y-ste Wurzel von x. Wird y nicht angegeben, so wird die Quadratwurzel berechnet.
pow( x: Double [, y: Double ] ) : Double
Berechnet die y-ste Potenz von y. Wird y nicht angegeben, so wird standardmäßig das Quadrat von x berechnet.
log( x: Double [, y: Double ] ) : Double
Berechnet den Logarithmus zur Basis y von x. Wird y nicht explizit angegeben, so wird der natürliche Logarithmus zur Basis e = 2.718281828459 angenommen.
sin( x: Double ) : Double
Berechnet den Sinus vom Radienten x.
cos( x: Double : Double ) : Double
Berechnet den Cosinus vom Radienten x.
tan( x: Double ) :Double
Berechnet den Tangens vom Radienten x.
hypot( x: Double, y: Double ) : Double
Berechnet die Länge der Hypothenuse eines rechtwinkligen Dreiecks mit den Schenkeln der Länge x und y.
sum( x1, x2, ..., xn ) : Double
Berechnet die Summe der Zahlen x1... xn.
avr( x1, x2, ..., xn ) : Double
Berechnet den Durchschnitt der Zahlen x1... xn.
val( s: String ) : Integer, Double oder Bool
Wandelt, falls möglich, einen String in einen numerischen oder boole'schen Wert um. Enthält der String keinen verwendbaren Inhalt, ist das Ergebnis Integer 0.
Erzeugt einen String der aus dem Zeichen mit dem übergebenen Zeichencode besteht. Beispiel:
s := char(34) + "Adresse" + chr(34);
str( x: beliebig [, size: Integer ] ): String
Wandelt x in einen String um. Die Größe des Strings kann mit size angegeben werden, wobei eventuell der Ergebnisstring rechts mit Leerzeichen ausgefüllt wird.
Alternativ kann format
verwendet werden.
len( s: String ) : Integer
Gibt die Länge von s aus.
mid( s: String, pos: Integer [, size: Integer ]) : String
Es werden size Zeichen ab der Position pos aus dem String s kopiert. Wird size nicht angegeben, so wird der von pos rechts stehende Teilstring übergeben.
Falls die mid
Funktion nicht verfuegbar ist, kann diese einfache Ersatz-Funktion verwendet werden:
function substring(s, start, len)
// Position fuer start ist 1-basiert.
llen := start + len - 1;
sl := left(s, llen);
sr := right(sl, len);
return sr;
end;
MessageBox(substring("abcdefg", 2, 4)); // Ergebnis ist "bcde"
left( s: String, size: Integer ) : String
Gibt die ersten size Zeichen von s in einen neuen String aus.
right( s: String, size: Integer ) : String
Gibt die letzten size Zeichen von s in einen neuen String aus.
trimleft
Schneidet führende Leerstellen ab.
Beispiel:
// Bei Firmenbezeichnung1 mit führenden Leerzeichen warnen
//
// Nach SQL Update - Adresse
//
v_text := "1" + TRIMLEFT(m_AdrFirmenbezeichnung1) + " 2" + m_AdrFirmenbezeichnung1;
messagebox(v_text);
trimright
Schneidet nachfolgende Leerstellen ab. (siehe oben)
getat( s: String, pos: Integer ) : Integer
Gibt den ASCII-Wert des Zeichens an der Stelle pos aus.
setat( pos: Integer, s: String, asc: Integer ) : String
Gibt eine Kopie des String s wieder. Die Kopie enthält jedoch an der Stelle pos das Zeichens asc.
setat( pos: Integer, s: String, sub: String [, size: Integer ] ) : String
Gibt eine Kopie des String s wieder. Die Kopie enthält jedoch ab der Stelle pos die size -viele Zeichen aus sub. Wird size nicht angegeben, wird der komplette String sub hinein kopiert.
Beispiel:
setat( 3, "abcdef", "ghijk", 2 ) -> "abghef"
setat( 3, "abcdef", "ghijk" ) -> "abghijk"
insert( pos: Integer, s: String, sub: String [, size: Integer ] ) : String
Gibt eine Kopie des String s wieder. In der Kopie ist jedoch an der Stelle pos der String sub eingefügt. Wird size mit angegeben, so werden nur size-viele Zeichen eingefügt.
Beispiel:
insert( 3, "abcdef", "ghijk", 2 ) -> "abghcdef"
insert( 3, "abcdef", "ghijk" ) -> "abghijkcdef"
Formatiert die Ausgabe nach Ihren Vorgaben. Analog dem format Befehl der Sprache C
.
format( fs: String, x(1): beliebig, ... , x:(n): beliebig ) : String
Siehe auch http://www.cplusplus.com/reference/cstdio/printf/ - Beispiel:
format("%i", m_Benutzernummer);
upper( s: String ) : String
Gibt eine Kopie des String s wieder, der jedoch alle Zeichen in Großbuchstaben enthält.
lower( s: String ) : String
Gibt eine Kopie des String s wieder, der jedoch alle Zeichen in Kleinbuchstaben enthält.
find( sub: String, s: String [, pos: Integer ] ) : Integer
Der 3. Parameter pos
ist nicht in allen Versionen verfügbar.
Falls sub in s enthalten ist, wird die Position des ersten Auftretens von sub nach der Stelle pos ausgegeben. Ansonsten ist das Ergebnis 0. Wird pos nicht mit angegeben, so wird vom Anfang von s gesucht. Groß- und Kleinschreibung werden dabei beachtet.
Es kann in einem Trigger ein Feld in dem aktuellen Datensatz beschrieben werden. Es sind nicht alle Felder beschreibbar. ZB. ist in der Adressbearbeitung AdrFirmenbezeichnung1
oder AdrTelefon
mit setField beschreibbar, aber nicht AdrEMail
. Beispiel:
SetField("AdrFirmenbezeichnung1",eingabe [,InterneDatensatznummer]);
Siehe mit SetField beschreibbare Felder
in der Hilfe
Der 3. Parameter 'InterneDatensatznummer' muss weggelassen werden, wenn der 'Ändern-Modus' aktiviert ist.
Wenn die entsprechende Tabelle nicht im Ändern-Modus ist (z.B. bei Neuanlage), oder wenn die Funktion aus einer Variante aufgerufen wird, kann hier je nach Tabelle zB. m_InterneAdressnummer, m_InterneArtikelnummer, m_InterneVorgangsnummer oder m_InternePositionsnummer verwendet werden.
variantinternerror( ierror: Integer, msg: String ) : nichts
Erzeugt einen Fehler mit der Nummer ierror und der zusätzlichen Meldung msg. Die Programmausführung wird komplett abgebrochen und ein Hinweisfenster erscheint.
error( ierror: Integer, msg: String ) : beliebig
Standardmäßig wie variantinternerror, mit dem Unterschied, daß diese Funktion überschrieben werden kann. Somit kann eine Fehlerbehandlung durchgeführt werden. Alle MiCLAS.-implementierten Funktionen rufen bei einem Auftreten eines Fehlers oder bei einer Abbruch während einer Eingabe diese Funktion auf.