|
Tip 70 - Een veld leegmaken vanuit een script 
Normaal gesproken zou het leegmaken
van een veld gebeuren met de scriptstap Clear. Maar
die werkt alleen als het veld dat we willen leegmaken
aanwezig is op de actieve lay-out en dat is niet altijd het
geval.
Het is dus beter gebruik te maken van
SetField:
die scriptstap werkt immers altijd. We vullen het veld dan
gewoon met niets:
SetField[<veldnaam>;""]
De twee aanhalingstekens staan hier
pal na mekaar; er staat dus niets tussen. Het veld
wordt dus gevuld met niets en is dus leeg. Dit werkt
perfect voor tekstvelden en containervelden, maar bij datum-
en tijdvelden is het resultaat verrassend. "Niets"
staat namelijk voor "niets als tekst"... en een datum- of
tekstveld verwacht geen tekst ! Als we een datum- of
tijdveld op de genoemde manier leegmaken, dan verschijnt er
geen leeg veld, integendeel: we krijgen een veld met een
mooi vraagteken in. FileMaker bedoelt daarmee: "Wat
betekent dit nu weer? Wat moet ik hier nu feitelijk
tonen? Ik verwacht immers een datum maar ik krijg een
tekst!".
We moeten dan maar een helpende hand
toesteken. Twee manieren staan hier ter
beschikking.
Eerste manier
We creëren een globaal veld van
hetzelfde formaat (dus datum of tijd) en laten dit verder
ongemoeid: we zetten er NOOIT iets in. We hebben
dus een echt leeg veld dat we bijv. GEmptyTime noemen
(de G staat voor global field...). Om ons tijdveld
leeg te maken gebruiken we weer SetField:
SetField[<veldnaam>;GEmptyTime]
Tweede manier, iets ingewikkelder,
maar dichter bij FileMaker's logica:
Set Field
[<veldnaam>;TextToTime("")]
Dank zij TextToTime
wordt het "niets" omgezet in een "tijdniets"...
|