0

Datensätze in Untertabelle auf "erledigt" setzen

In einer Untertabelle habe ich 2 Felder:

TERMIN

STATUS

Ich möchte nun über eine Schaltfläche den STATUS ändern, allerdings nur wenn der TERMIN in der Untertabelle kleiner ist, als ein eingestelltes globales DATUM in der Haupttabelle .Wie kriege ich das hin? 

 

Global kann ich schon den Status wie folgt ändern:

for i in Mitarbeiter do
Mitarbeiter.(Termin := appointment(datetime(Datum + Von), Bis - Von));
Mitarbeiter.(Status := 2);

 

Jetzt fehlt die Abhängigkeit von einem Datum. Danke :) 

4 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    man kann das Startdatum des Terminfeldes mit date(start(Termin)) ermitteln und dann vergleichen:

    ---

    let myDate:='GLOBALES DATUM';
    for i in Mitarbeiter do
    i.(Termin := appointment(datetime(Datum,Von), Bis - Von));
    i.(if date(start(Termin))<myDate then Status := 2 end)
    end

    ---

    Du verwendest aber schon ein Datum aus der Tabelle Mitarbeiter zum Termin erstellen. Man kann auch dieses Datum nehmen und mit dem globalen Datum vergleichen.

     

    Leo

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hi Leo, 

     

    danke für die schnelle Nachricht. Das funktioniert perfekt. 

    Ja, da bin ich hin und her gerissen, ob ich das Datum abfange bevor es als Appointment in den Kalender wandert, oder dann eben erst das tatsächliche Appointment abgleiche. Was denkst Du macht hier mehr Sinn? Vor allem in Hinblick auf eventuelle Terminänderungen.

     

    Außerdem stehe ich beim selben Modell noch vor folgendem Problem: 

    Es sollen mehrere Mitarbeiter terminiert werden, die alle einen eigenen Kalender mit eigener Organisation bekommen sollen. Aktuell arbeite ich mit Duplikaten der selben Tabelle "Mitarbeiter" für jeden Mitarbeiter, was etwas umständlich ist. Vor allem wenn ich Anpassungen vornehme, muss ich das immer für jede Mitarbeiter-Tabelle tun. Gäbe es hier einen einfacheren Weg? zB. mit mehreren Terminfeldern in einer globalen Mitarbeiter Tabelle?

    Danke fürs mitdenken! Wie immer ein super Service von Ninox.

     

    Reinhard

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    ohne Datenmodell ist es schwer zu verstehen Ich würde eine Zusatztabelle einsetzen wo ich in einem Datensatz eine Verknüpfung zu Mitarbeiter und eine Verknüpfung zu Firma erstelle.

    Leo

    • Reinhard
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke Leo, 

     

    das Hilft schonmal. Ich habe gesehen, dass es in einer Datenbank nicht möglich ist mehrere verschiedene Kalender zur Synchronisation erstellen kann, so dass diese dann wiederrum über Google oder den iCal an Mitarbeiter selektiv freigegeben werden könnten. 

    Ich habe nun die Untertabelle TERMINE in der Haupttabelle PROJEKTE auf eine einzige Untertabelle reduziert und verwalte dort pro Mitarbeiter nun ein eigenes Terminfeld. Die Buchung erledige ich aktuell über folgende Funktion, wobei ich über das Feld KALENDER die Spaltenzuweisung ausführe:

     

    if Datum = null or Von = null or Bis = null or Kalender = null then
    alert("Es fehlen leider noch Werte, bitte prüfe DATUM, VON, BIS, KALENDER")
    else
    if Kalender = 1 then
    Reini := appointment(datetime(Datum + Von), Bis - Von)
    else
    if Kalender = 2 then
    Ella := appointment(datetime(Datum + Von), Bis - Von)
    else
    if Kalender = 3 then
    Tommy := appointment(datetime(Datum + Von), Bis - Von)
    end
    end

     

    Anschließend arbeite ich im Ninox mit unterschiedlichen Farben zur Kennzeichnung und erstelle eine Synchronisation über iCal zu Google (etwas umständlich aber der direkte Weg zu meinem Google Kalender hatte nicht funktioniert). Dort erstellen wir dann je nach zugriffsrechten eigene Kalender für die Mitarbeiter, die sie selbst verwalten und anpassen können. Zur Abrechnung müssen wir dann die tatsächlichen Zeiten der Mitarbeiterkalender mit dem Ninox Kalender abgleichen. Hier wäre die Frage ob es auch eine schöner Lösung gäbe? Vermutlich mit der Cloud-Lösung und nicht der Desktop Version, die ich aktuell nutze.

     

    Ein letzter wichtiger Punkt wäre noch eine Kontrollinstanz einzubauen, ob der jeweilge Mitarbeiter schon einen Termin in seiner Kalenderspalte, evtl. auch in einem anderem PROJEKT hat. Bei uns sind buchungen immer Lückenlos möglich: 10 bis 12 Uhr und ab 12 Uhr bis BELIEBIG (also nicht 12:01). -> siehe anderer Thread von mir: Terminüberschneidungen vermeiden,

     

    Danke wiedermal vorweg!