Script für Urlaubstage

  1. bmaas2k2

    bmaas2k2 Thread StarterMacUser Mitglied

    Mitglied seit:
    29.04.2003
    Beiträge:
    84
    Zustimmungen:
    0
    Hallo,

    habe eine Tabelle "Urlaub" mit den Feldern

    Mitarbeiter_ID, Mitarbeiter_Name, Datumvon, Datumbis,


    Jetzt möchte ich einen Button einfügen "Urlaub eintragen", und dann sollen die Urlaubsdaten in eine neue Tabelle eingetragen werden.

    Nennen wir die Tabelle "Urlaub 2".

    Wenn ich jetzt in der Tabelle "Urlaub" einen Urlaub für Mitarbeiter xyz eintrage, vom 01.03.2006 bis zum 05.03.2006, soll mir der Button Urlaub eintragen folgende Werte in
    die "Urlaub 2" Tabelle eintragen:
    Mitarbeiter_ID Mitarbeiter_Name Tag
    ma-0001 xyz 01.03.2006
    ma-0001 xyz 02.03.2006
    bis
    ma-0001 xyz 05.03.2006

    also das er mir die Urlaubstage von - bis als einzelne Datensätze in eine Tabelle ausgibt.

    Wie kann ich das machen?

    Benutze Filemaker 8 Pro
     
    bmaas2k2, 01.02.2006
  2. joachim14

    joachim14MacUser Mitglied

    Mitglied seit:
    08.02.2005
    Beiträge:
    7.295
    Zustimmungen:
    433
    Erst mal ins Unreine:

    In der Tabelle Urlaub ein Formelfeld anlegen, das die Zahl der Urlaubstage ausrechnet (Feiertage lassen wir mal eben außen vor),
    Diese Zahl nehmen und damit in Tabelle Urlaub 2 genau so viele neue Datensätze anlegen lassen,
    In Tabelle Urlaub 2 das jeweilige Datum des Urlaubstages in jedem Datensatz eintragen lassen. Mit der Ersetzen + Seriennummerfunktion geht das vermutlich nur mit einem weiteren Hilfsfeld. Vielleicht füllt man die Felder besser mit einer Scriptschleife.

    Wie gesagt: Ins Unreine.
     
    joachim14, 01.02.2006
  3. ThoRo

    ThoRoMacUser Mitglied

    Mitglied seit:
    22.08.2005
    Beiträge:
    849
    Zustimmungen:
    59
    Hallo,

    der Hinweis auf die Scriptschleife bringt Dich weiter...

    In Tabelle 1 läuft eine Schleife, die solange neue Datensätze in Tabelle 2 erzeugt, wie die Schleifenabbruchbedingung (Enddatum des Urlaubs) noch nicht erreicht ist.
    Bei jedem Durchlaufen der Schleife wird ein interner Zähler um 1 hochgesetzt. Aus dem Anfangsdatum plus dem aktuellen Zählerstand wird dann das Datum errechnet, das in Tabelle 2 eingetragen wird (und auch zum Prüfen der Schleifenabbruchbedingung genutzt wird).

    Hört sich komplizierter an als es zu programmieren ist...

    MfG

    ThoRo
     
    ThoRo, 01.02.2006
  4. bmaas2k2

    bmaas2k2 Thread StarterMacUser Mitglied

    Mitglied seit:
    29.04.2003
    Beiträge:
    84
    Zustimmungen:
    0
    Hab es mit der Schleife hinbekommen.

    Ist halt mein erstes Skript das ich geschrieben habe, und da kannte ich noch nicht die ganzen Befehle, was die bedeuten usw.

    Habs jetzt hinbekommen das die Tage von - bis in die neue Tabelle einzeln eingetragen werden.

    Jetzt hab ein neues Problem.

    Sagen wir mal ich habe in der Tabelle Einsatz ein Datumsfeld, jetzt möchte ich in einem Ausschnitt nur Mitarbeiter anzeigen lassen, die an diesem Einsatztag kein Urlaub haben, und noch ein Ausschnitt, wo alle Mitarbeiter angezeigt werden, die an diesem Einsatzdatum im Urlaub sind.

    Wie kann ich das Einstellen?

    Ne andere frage, wenn ich mit einer Formel überprüfen möchte, ob der Mitarbeiter an diesem Einsatztag Urlaub hat, habe ich das so gemacht:

    wenn ( einsatzdatum ungleich Urlaub::tag ; "buchbar" ; "nicht buchbar" )

    das problem ist, er überprüft glaube ich nicht die ganzen datensätze der tabelle urlaub. wie kann ich das machen, das er die ganze tabelle absucht? also jeden eintrag für diesen Mitarbeiter?

    Hoffe ihr könnt mir helfen.
     
    bmaas2k2, 02.02.2006
  5. ThoRo

    ThoRoMacUser Mitglied

    Mitglied seit:
    22.08.2005
    Beiträge:
    849
    Zustimmungen:
    59
    Dafür brauchst Du zwei Ausschnitte, die auf unterschiedlichen Relationen basieren. Die erste Relation prüft, ob Tabelle1::Einsatzdatum = Tabelle2::Urlaubsdatum. Die zweite Relation prüft die Ungleichheit.

    Bei einer Formel, die mit relational verbundenen Daten aus einer zweiten Tabelle arbeitet, stellst Du nicht die "Durchsuchbarkeit" ein, sondern legst bereits in der Relation fest, welche Datensätze "gefunden" werden (können). Wenn also nicht alle Datensätze berücksichtigt werden, dann stimmt mit der Relationsdefinition etwas nicht - sie greift vielleicht zu kurz...

    MfG

    ThoRo
     
    ThoRo, 02.02.2006
  6. bmaas2k2

    bmaas2k2 Thread StarterMacUser Mitglied

    Mitglied seit:
    29.04.2003
    Beiträge:
    84
    Zustimmungen:
    0
    Hallo ThoRo,

    danke für deine antwort.

    Wäre die Formel den so richtig mit wenn einsatzdatum ungleich urlaubsdatum

    oder muß die anders sein?

    Ich probier das mal mit der Falls Formel wenn ich zu Hause bin.
     
    bmaas2k2, 02.02.2006
  7. ThoRo

    ThoRoMacUser Mitglied

    Mitglied seit:
    22.08.2005
    Beiträge:
    849
    Zustimmungen:
    59
    Hallo bmaas2k2 ,

    grundsätzlich hört sich die Formel erstmal richtig an

    Falls(einsatzdatum <> urlaub::tag; "buchbar"; "nicht buchbar")

    Wichtig ist, das die Relation "urlaub" funktioniert und auf alle Datensätze zugreifen kann....

    MfG

    ThoRo
     
    ThoRo, 02.02.2006
Die Seite wird geladen...