smartsuitefaq.martinholz.de

Endlos-Makros (Schleifen)

(Inklusive Nummerierung von Datensätzen und globalen Änderungen an Datensätzen)

Makros werden in jeder Version von Approach unterschiedlich behandelt, so daß Sie auf jeden Fall die Dokumentation Ihrer Version lesen sollten, damit Sie wissen wie Sie Makros in Ihrer Version einsetzen können. (Wir werden das an dieser Stelle nicht doppelt und dreifach beahndeln)

Vereinfacht gesagt macht ein Endlos-Makro (das durchaus mehrere andere Makros enthalten kann) folgendes:

Diese Schritte bedeuten, daß die angegebene Operation auf jeden gefundenen Datensatz der Datenbank angewandt wird. Es können Bedingungen für die Operationen eingeügt werden, so daß das Makro nur unter den definierten Bedingungen ausgeführt wird (also nur auf bestimmte Datensätze). Wenn Sie z.B. zu allen Telefonnummern, die mit einer '5' beginnen eine '6' hinzufügen möchten, würde Ihr Makro folgenden Befehl enthalten:

SET DATABASE.telefonnummer to
  IF(LEFT(DATABASE.telefonnummer,1)='5',
  COMBINE('6',DATABASE.telefonnummer)

(in diesem Falle ist 'telefonnummer' ein Textfeld)

Häufig ist es notwendig ein Makro voranzusetzen, daß die Bedingungen für das Endlos-Makro setzt, damit es korrekt funktioniert (wir nennen das ein 'Steuer-Makro'). Dieses Steuer-Makro könnte folgendes tun:

Die letzte Operation des Endlos-Makros startet das Endlo-Makro immer nochmal (NICHT DAS STEUER-MAKRO). Das wird später gezeigt, doch zuerst ...

Um Informationen von einem Datensatz zum anderen zu übertragen müssen Sie Variablenfelder einsetzen. Möchten Sie zum Beispiel eine Reihe von Datensätzen durchnumerieren, müssen Sie wissen, welche Nummer der vorherige Datensatz hatte, um den aktuellen Datensatz korrekt zu numerieren.

Das folgende Beispiel zeigt sowohl den Einsatz eines 'Steuer-Makros' als auch eine Variable für die fortlaufende Numerierung von Datensätzen.

  1. Erstellen Sie ein numerisches Feld 'IdNumber', welches dann die Numerierung enthalten wird, und Variablenfeld 'IdVar' um die Numerierung zu berechnen.
  2. Erstellen Sie ein verstecktes Endlos-Makro 'SequentialLoop'. Dieses Makro soll folgendes beinhalten:
    • das numerische Feld 'IdNumber' auf 'IdVar' setzen
    • das Feld 'IdVar' auf 'IdVar+1' setzen
    • zum nächsten Datensatz gehen
    • das Makro 'SequentialLoop' ausführen

    Damit diesen Makro richtig funktioniert, benötigen Sie das in Schritt 3) erklärte Kontrollmakro

  3. Erstellen Sie ein Makro 'Sequential Numbering', das als Kontrollmakro fungieren soll. Es sollte folgendes tun:
    • zur gewünschten Ansicht wechseln (optional)
    • zum gewünschten Datensatz wechseln
    • die Variable 'IdVar' auf die gewünschte Nummer des ersten Eintrages setzen
    • ausführen des Makros 'SequentialLoop'
    • zum ausführen des Endlos-Makros, 'Sequential Numbering' starten.

Anmerkung: In Version 2.1 müssen dafür 3 Makros eingesetzt werden (die tun exakt dasselbe, wie oben beschrieben, aber es werden halt 3 Makros benötigt. Version 2.1 stürzt leicht ab, wenn in Endlos-Makros mehrere Makros eingefügt werden):

Makro 1:
Variablenfeld (IdVar) auf '1' setzen
Makro 2 ausführen

Makro 2:
den Wert des Variablenfeldes dem Numerischen Feld (IdNumber) übergeben.
zum nächsten Datensatz wechseln
Makro 3 ausführen

Makro 3:
dem Variablenfeld den Wert 'IdVar + 1' hinzufügen
Macro 2 ausführen

Beachten Sie auch den Abschnitt 'Numerierung von Einträgen' in dieser FAQ

Über diesen ArtikelArtikelbewertung
Stand: 15.08.2001
Autor(en): John Brown, Martin Holz
engl. Original: www.netspace.net.au/~jabrown/approach/webfaq04020180.html
Durchschnittsnote: 1
1 2 3 4 5 6