<< Klicken um das Inhaltsverzeichnis anzuzeigen >> Attribute ersetzen - Karten-Explorer |
Mit dieser Programmfunktion können Attribute (Felder, Spalten) durch Werte oder Ausdrücke (Berechnungen) ersetzt werden. Dabei kann die Ersetzung für alle oder nur für bestimmte Datensätze (Bereich, Filter) durchgeführt werden. So können Aufgabenstellungen wie Berechne das Feld Anzahl aus Rind+Schwein+Schaf oder Ersetze das Feld Ergebnis mit 'Positiv' für die Filterbedingung Code=2
Feld wählen:
Zunächst ist das zu ersetzende Feld aus der Listenansicht auszuwählen.
Ersetzen mit:
Des weiteren ist der Wert bzw. Ausdruck , mit dem das Feld ersetzt werden soll anzugeben. Beachten Sie, das die Notation des Wertes bzw. Ausdrucks in Abhängigkeit des Feldtyps (Zeichen, Numerisch, Datum und Logisch) differiert. Wird eine Zeichenkette durch einen Wert ersetzt, ist dieser z.B. in Hochkommata einzuschließen. Des weiteren gibt es eine Vielzahl von Funktionen und Operatoren mit der Ausdrücke gebildet werden können, die in einem kleinen Crash-Kurs geordnet nach Feldtypen dargestellt sind:
•numerische Felder z.B. 100
•Zeichenfelder z.B. 'Meier'
•Datumsfelder z.B. CtoD( '10.08.1965')
•Logische Felder z.B. .t.
Es kann entschieden werden, ob
•alle Datensätze
•Datensätze die eine Markierung haben (Selektion)
•der Rest der Datei ab dem aktuellen Datensatz
•die nächsten ? Datensätze
•oder alle Datensätze, die einem Filter genügen,
ersetzt werden sollen.
Filterbedingungen stellen einen logischen Ausdruck wie z.B. eine Vergleichsoperation dar.
Für ein numerisches Feld könnte dies z.B. sein Rind>0, für ein Zeichenfeld Name="Meier", für ein Datumsfeld Datum>=CtoD("01.01.2000") und für ein logisches Feld !Untersucht ("nicht untersucht"). Umfangreiche Hinweise zum Bilden von Filterausdrücken finden Sie hier. Beachten Sie, dass Filterbedingungen letztendlich immer logische Werte (Wahr oder Falsch, bzw. .t. oder .f.) ergeben, während die im weiteren diskutieren Ersetzungsausdrücke, mit denen der Feldinhalt ersetzt wird, in Abhängigkeit vom Typ des selektierten Feldes einen numerischen, Zeichen-, Datums- oder logischen Ausdruck ergeben müssen .
Numerische Felder enthalten ausschließlich Zahlen (ggf. Dezimalpunkt und Vorzeichen) wie z.B. 1000 oder 1234.45.
Außerdem kann man mit numerischen Felder selbstverständlich rechnen wie z.B. Rind+Schaf+Schwein. Hier gilt Punkt- vor Strichrechnung, Klammern sind erlaubt und die Division durch Null ist ungültig...
numerische Operatoren (Auszug) |
|
+ |
Addition |
- |
Subtraktion |
* |
Multiplikation |
/ |
Division |
^ |
Potenzieren (2^3=8 oder 4^0.5=2) |
% |
Moduls (ganzzahliger Rest einer Division, z.B. 17 % 10 = 7) |
wichtige Funktionen |
|
Min |
Min( Zahl1, Zahl2 ) → Zahl ... ermittelt das Minimum zweier Zahlen |
Max |
Max( Zahl1, Zahl2 ) → Zahl ... ermittelt das Maximum zweier Zahlen |
Val |
Val( Text ) → Zahl ... wandelt eine Zeichenkette in eine Zahl um |
Sqrt |
Sqrt( Zahl ) → Zahl ... Quadratwurzel (auch mit Zahl^0.5 notierbar) |
Log |
Log( Zahl ) → Zahl ... natürlicher Logarithmus |
Exp |
Log( Zahl ) → Zahl ... Antilogarithmus |
Recno |
Recno() → Zahl ... ermittelt die aktuelle Datensatznummer |
Experten-Tipp: Die Division durch Null ist bekanntlich nicht erlaubt. Wird bei der Abarbeitung des Ersetzens eine Division durch Null vorgenommen, bricht das Ersetzen an dieser Stelle ab.
Der Ausdruck Positiv/ Untersucht*100 liefert z.B. die Prävalenz und funktioniert so lange, bis ggf. ein Datensatz im Feld "Untersucht" eine Null enthält. Um diesen Fall abzufangen, kann der IIF-Operator verwendet werden, der nach dem Schema IIf( Bedingung, Ausdruck1, Ausdruck2 ) funktioniert und dann, wenn der logische Ausdruck Bedingung erfüllt ist, Ausdruck1, ansonsten Ausdruck2 zurück gibt.
Demnach wären Sie mit der Notation IIf( Untersucht>0, Positiv/ Untersucht*100, 0 ) auf der sicheren Seite.
•Werte sind in einfache oder doppelte Hochkommata einzuschließen, wie z.B. 'Meier' oder "Meier"
•Um einen Leerwert (leere Zeichenkette) zu erzeugen, sind lediglich 2 Hochkommata z.B. ' ' oder " " anzugeben.
wichtige Funktionen (Hinweis: grau dargestellte Parameter sind optional und können ggf. weggelassen werden) |
|
Left |
Left( Text, Anzahl ) → Zeichen ... ermittelt den linken Teil einer Zeichenkette |
Right |
Right( Text, Anzahl ) → Zeichen ... ermittelt den rechten Teil einer Zeichenkette |
Substr |
Substr( Text, Startposition, Anzahl ) → Zeichen ... gibt die gewünschte Anzahl der Zeichen ab der Startposition zurück. Wird der optionale Parameter Anzahl nicht angegeben, werden alle Zeichen ab der Startposition zurück gegeben. |
Str |
Str( Zahl, Länge, Dezimal ) → Zeichen ... wandelt eine Zahl in eine Zeichenkette um. Optional können Länge (inklusive Dezimalpunkt und Nachkommastellen) und / oder Anzahl der Nachkommastellen angegeben werden |
At |
At( Suchtext, Text ) → Zahl ... ermittelt die Position des Auftretens von Suchtext im Text und gibt sie zurück (0, wenn nicht gefunden) |
Upper |
Upper( Text ) → Zeichen ... wandelt Text in Großbuchstaben um |
Lower |
Lower( Text ) → Zeichen ... wandelt Text in Kleinbuchstaben um |
StrZero |
StrZero( Zahl, Länge, Dezimal ) → Zeichen ... wandelt eine Zahl in eine Zeichenkette mit führenden Nullen um. Optional können Länge (inklusive Dezimalpunkt und Nachkommastellen) und / oder Anzahl der Nachkommastellen angegeben werden. Tipp: Die Funktionen StrZero() und Recno() können kombiniert werden, um aufgrund der Datensatznummer eindeutige Identifikationsschlüssel zu erzeugen. StrZero( Recno(), 5 ) würde ab dem ersten Datensatz 00001, 00002, 00003 usw. zurückgeben. |
StrTran |
StrTran( Text, Suchtext, Ersetzungstext, Start, Anzahl ) → Zeichen .. ersetzt Zeichen in einer Zeichenkette, indem im Text ein Suchtext mit dem Ersetzungstext ausgetauscht wird. Optional kann eine Startposition (ab Zeichen ?) und / oder die Anzahl der durchzuführenden Ersetzungen angegeben werden. •StrTran( Name, "ü", "ue" ) ersetzt im Feld Name die Zeichenfolge ue mit ü •StrTran( Name, "/", "" ) löscht im Feld Name das Zeichen / (ersetzt es mit Leerzeichen) |
LTrim |
LTrim( Text ) → Zeichen ... entfernt führende Leerzeichen |
Trim |
Trim( Text ) → Zeichen ... entfernt Leerzeichen am Ende |
AllTrim |
AllTrim( Text ) → Zeichen ... entfernt führende Leerzeichen und Leerzeichen am Ende |
Zeichenkettenoperatoren |
|
+ |
fügt 2 Zeichenketten zusammen |
- |
fügt 2 Zeichenketten zusammen und entfernt abschließende Leerzeichen in der ersten |
•Werte vom Typ Datum können mit der Funktion CtoD() generiert werden, wie z.B. CtoD( '31.08.2003' )
• Tage können addiert und subtrahiert werden. Für 01.01.2003 - 1 ist das Ergebnis 31.12.2002 und 01.01.2003 + 31 ergibt sich 01.02.2003.
•Die Differenz zwischen Kalenderdaten kann durch Subtraktion von 2 Datumswerten ermittelt werden.
wichtige Funktionen |
|
Today |
Today() → Datum ... gibt das Tagesdatum zurück |
CtoD |
CtoD( Zeichenkette ) → Datum ... wandelt eine Zeichenkette in ein Datum um |
DtoC |
DtoC( Datum ) → Zeichen ... wandelt ein Datum in eine Zeichenkette um |
Year |
Year( Datum ) → Zahl ... ermittelt die Jahreszahl aus einem Datum |
Month |
Month( Datum ) → Zahl ... separiert die Nummer des Monats aus einem Datum |
CMonth |
CMonth( Datum ) → Zeichen ... ermittelt den Monatsnamen aus einem Datum |
Day |
Day( Datum ) → Zahl ... separiert den Tag aus einem Datum |
CDoW |
CDoW( Datum ) → Zeichen ... ermittelt den Namen des Wochentags aus einem Datum |
Min |
Min( Datum1, Datum2 ) → Datum ... ermittelt das Minimum zweier Datumswerte |
Max |
Max( Datum1, Datum2 ) → Datum ... ermittelt das Maximum zweier Datumswerte |
Datumsoperatoren |
|
+ |
Datum + Zahl → Datum ... addiert n Tage zu einem Datum |
- |
•Datum - Zahl → Datum ... subtrahiert n Tage von einem Datum •Datum1 - Datum2 → Zahl ... ermittelt die Differenz aus 2 Datumswerten |
Logische Felder sind Datenbankfelder, die genau zwei Zustände annehmen können, nämlich die Wahrheitswerte "Wahr" oder "Falsch". Diese Werte werden durch .T. oder .F. (auch .t. oder .f.) definiert.