Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Vorgänge mit Abhängigkeiten planen

Vorgänge mit Abhängigkeiten planen

Halten Sie Vorgänge in einem Gantt-Diagramm in der richtigen Reihenfolge: Verknüpfen Sie Vorgänge, lassen Sie abhängige Vorgänge einer Änderung folgen oder nur melden, welche Abhängigkeit verletzt ist, und rechnen Sie Dauern in Arbeitszeit.

Voraussetzungen: WKL Forms Object Library 1.23 oder höher.

Lösungsüberblick

Abhängigkeiten stammen aus einer Tabelle (DependencySource mit PredecessorField, SuccessorField, LinkTypeField, LagField) oder aus einem Textfeld des Nachfolgers (PredecessorsField). ScheduleMode legt fest, was eine Änderung bewirkt: wgsManual verschiebt nichts und listet verletzte Abhängigkeiten in Violations auf; wgsAutomatic verschiebt die abhängigen Vorgänge. Die Arbeitszeit ergibt sich aus WorkDays, WorkHours und den freien Tagen aus HolidaySource; DurationUnit rechnet in Tagen oder Stunden. Benutzer verknüpfen und lösen Verknüpfungen mit Strg+F2 und Strg+Umschalt+F2, über das Kontextmenü oder indem sie vom Ende eines Balkens zu einem anderen ziehen.

Umsetzung

With Me!Gantt1.Object
    ' Dependencies as text in the task record instead of a table: "3EA+2;5AA"
    ' (EA finish-to-start, AA start-to-start, EE finish-to-finish, AE start-to-finish; lag in DurationUnit).
    .DependencySource = ""
    .PredecessorsField = "Vorgaenger"
 
    ' Calendar: Monday to Saturday, 7:00-12:00 and 12:30-16:00, free days from a table.
    .WorkDays = 2 + 4 + 8 + 16 + 32 + 64            ' bit 1 = Sunday ... bit 64 = Saturday
    .WorkHours = "07:00-12:00;12:30-16:00"
    .HolidaySource = "tblFeiertage": .HolidayField = "Tag"
 
    ' Automatic scheduling: link 3 -> 4 with one working day lag; 4 and its successors follow.
    .ScheduleMode = wgsAutomatic
    .LinkTasks 3, 4, wglFinishToStart, 1
    .SetTaskDates 3, #10/8/2026#, #10/12/2026#     ' 4 moves again
 
    ' Manual: nothing moves; broken dependencies are listed and drawn red.
    .ScheduleMode = wgsManual
    Dim item As Variant
    For Each item In .Violations
        Debug.Print item
    Next
    .Reschedule                                     ' "Projekt neu planen": everything as early as allowed
 
    Debug.Print .TaskDuration(3), .TaskSlack(3), .IsCritical(3)
End With

Hinweise

  • Das Ende ist der letzte Arbeitstag eines Vorgangs (bei DurationUnit = Stunden: der Zeitpunkt, an dem die Arbeit endet). Fällt ein freier Tag in einen Vorgang, hat der Vorgang einen Arbeitstag weniger; das Ende bleibt dort, wo die Daten es angeben.
  • Vorgänge ohne Abhängigkeiten und Einschränkungen verschiebt die automatische Planung nie. Das erste Reschedule bringt daher einen von Hand eingegebenen Plan nicht durcheinander.
  • Ein im automatischen Modus von Hand verschobener Vorgang erhält die Einschränkung „Anfang nicht früher als“. Ordnen Sie ConstraintTypeField und ConstraintDateField zu, damit sie über Sitzungen hinweg erhalten bleibt.
  • LinkTasks weist eine Abhängigkeit ab, die einen Zyklus schließen würde (wkeCycle), ebenso eine zwischen einem Vorgang und seinem eigenen Sammelvorgang (wkeInvalidValue); in diesem Fall wird nichts geschrieben.
  • Die Gliederung ist Teil des Plans: IndentTask und OutdentTask (Alt+Umschalt+Nach-rechts/Nach-links, Einrücken/Ausrücken im Kontextmenü) machen einen Vorgang zum Teilvorgang des vorhergehenden Vorgangs oder lösen ihn aus seinem Sammelvorgang. TaskResources und Ressourcen zuordnen … ordnen Ressourcen zu.
  • Änderungen per Code lösen keine Ereignisse aus. Dieselben Änderungen durch den Benutzer lösen BeforeTaskChange, BeforeLinkAdd oder BeforeLinkDelete aus; dort kann VBA sie anpassen oder abbrechen.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/plan-tasks-with-dependencies.txt · Zuletzt geändert: von Wolfgang van der Stille