Projekte DB
Hallo Forum,
ich habe die Beispiel DB Projekte einmal ausprobiert.
Etwas ist ist mir aufgefallen. Das Endedatum für einen Task kann vor dem Anfangdatum liegen.
Wie könnte man diesen Fehler abfangen?
Und wie kann ich folgendes realisieren?
Ich möchte gerne tasks miteinander verknüpfen. Task2 kann erst beginnen wenn task1 erledigt ist. Verschiebt sich task1 um eine Woche, muss sich auch task2 um eine Woche verschieben. Das wäre für die Gant-Chart Ansicht auch ganz praktisch
Klingt glaub ich nach viel Konfiguration, oder?
Vielen Dank für eure Anregungen.
Viele Grüße
Alexander
15 Antworten
-
Dies ist leicht möglich. In den Eigentschaften den 'Ende Datum' Felds gibt es die Property "Nach Änderungen folgendes...":
–––
if 'Ende Datum' then
if 'Ende Datum' > 'Beginn Datum' then
alert("Ende vor dem Beginn? Kann nicht sein.");
'Ende Datum' := null
end
end
–––
Birger
-
Hallo,
@Birger - ich denke du wolltest "<" statt ">" schreiben...:
if 'Ende Datum' then
if 'Ende Datum' < 'Beginn Datum' then
alert("Ende vor dem Beginn? Kann nicht sein.");
'Ende Datum' := null
end
endVG Frank
-
Richtig! Vielen Dank, Frank.
-
Hallo Alexander,
"Und wie kann ich folgendes realisieren?
Ich möchte gerne tasks miteinander verknüpfen. Task2 kann erst beginnen wenn task1 erledigt ist. Verschiebt sich task1 um eine Woche, muss sich auch task2 um eine Woche verschieben."
Vorschlag: Du gibst der Task-Tabelle eine Verknüpfung mit sich selbst und benennst diese z. B. "Vorgänger", die zusätlich angelegte Verknüpfung 1:n dazu nennst Du dann vielleicht "Nachfolger". Task2 bekommt dann als Vorgänger den Task1 zugewiesen - wodurch dann Task2 automatisch Nachfolger von Task1 ist. Änderst du den Termin von Task1 greifst du auf die Nachfolger-Datensätze zu und änderst dort die Termine entsprechend. Das muss dann natürlich rekursiv passieren damit dann auch die Nachfolger von Task2 verschoben werden...
VG Frank
-
"Vielen Dank, Frank" erinnert mich gerade ein wenig an "Danke Anke" ... und nun zurück zum Lück!
-
Hallo Frank, hallo Alexander
damit komme ich doch schon mal ein ganzes Stück weiter.
Vielen Dank für euere Bemühungen.
VG
Alex
-
Gleich noch eine Frage hinterher ....
Wie bekomme ich folgende Anforderung realisert:
Ein Task hat eine Anfang Datum und ein Ende Datum. Jetzt verschiebt sich das Anfang Datum um 2 Tage. Das Ende Datum soll sich ebenfalls um 2 Tage verschieben. Ich vermute, das geht nur, wenn ich vorher eine Dauer für den Task vergebe, oder?
..und eins noch:
Wie kann ich ein "SubProject" als Abgeschlossen markieren, wenn alles Tasks abgeschlossen sind?
Zusätzlich könnete man ja das SubProjet in den Status "in Bearbeitung" setzen, solbald eine Task in den Status "in Bearbeitung" wechselt.
Vielen Dank für Ideen.
VG
Alex
-
Hallo Alex,
1. Du kannst die Dauer beim Verschieben natürlich auch errechnen und zwischenspeichern, ich denke aber dass ein Feld Dauer grundsätzlich da nicht schlecht wäre. Du kannst die Dauer ja nach Eingabe des Ende Datum errechnen - genauso aber auch das Ende Datum nach Eingabe der Dauer.
2. Da stellt sich mir erst mal die Frage, wie die Tasks denn eigentlich als Abgeschlosen markiert werden und ob Projekt/SubProject sowie Task verschiedene Tabellen sind oder Datensätze der gleichen Tabelle. Je nachdem könntest du den Status einfach über ein berechnetes Feld anzeigen - ungefähr so:
if count(select Task where SubProject = this and Status="in Bearbeitung") = 0 then
"Abgeschlossen"
else
"in Bearbeitung"
endoder du musst eine solche Prüfung bei der Statusänderung durchführen und dann das Statusfeld des SubProjects ändern.
VG Frank
-
Hallo Frank,
Vielen Dank für deine Hilfe.
Punkt 1. habe ich umsetzen können.
Punkt 2 macht mich kirre:
Ich habe ein Funtionsfeld mit dem Namen Status in 'Sub Project' eingebaut.
Die Funtion:
if cnt(select Task where 'Sub Project' = this and Status = 2) = 0 then
"Abgeschlossen"
else
"Bearbeitung"
end
Leider ist der Status immer Abgeschlossen obwohl es noch drei Tasks gibt, die in Bearbeitung sind, also im Status 2.
In Tabelle Task ist eine N:1 Verknüfung (Komposition) mit Tabelle Sub Project.
Hast du noch eine Idee?
VG
Alex -
Spontane Idee: Schon mal mit "number(Status) = 2" versucht?
-
Zweite, nicht mehr ganz so spontane Idee: "this" vorher in eine Variable schreiben und diese dann für die Abfrage nutzen.
-
Hallo Copytexter.
die erste spontane Idee war es leider nicht. Die zweit, verstehe ich nicht so ganz. Das script sieht aktuell so aus:
if cnt(select Task where 'Sub Project' = this and number(Status) = 3) != 0 then
"Abgeschlossen"
else
"Bearbeitung"
end
VG
Alex -
Hallo Alex, gemeint war folgendes:
let mySub := this;
if cnt(select Task where 'Sub Project' = mySub and number(Status) = 3) != 0 then
"Abgeschlossen"
else
"Bearbeitung"
end
-
Hallo Copytexter,
super! Das war es schon ( fast)
let mySub := this;
if cnt(select Task where 'Sub Project' = mySub and number(Status) != 3) = 0 then
"Abgeschlossen"
else
"Bearbeitung"
endHabe den Status auf !=3 geändert. Nun funktioniert es .
Vielen Dank für deine Hilfe!
VG
Alex -
Content aside
- vor 5 JahrenZuletzt aktiv
- 15Antworten
- 2996Ansichten