FieldNameToFieldConstant 能否与 TaskDependency 对象一起使用
Can FieldNameToFieldConstant be used with the TaskDependency Object
我正在使用 TaskDependency 对象来跟踪目标任务的前置任务。然后我想用当前 link 对的值更新 "Number" 字段之一。我在遍历跟踪中的每个 link 时递增此值。我将此数字字段用作排序字段,因此跟踪可以按逻辑顺序而不是任务 ID 顺序显示
我想让这个数字字段成为任何可用的数字字段,用自定义名称标识,因此它是一个自定义字段。我已经尝试使用 .Getfield 和 .SetField 来读取和写入这个递增的数字。
我有一个子例程,用于检查与此过程关联的自定义名称的所有数字字段。我将此过程命名为 CustomNumberNameExists,此函数 returns 一个字符串,例如 Number18,如果 Number18 具有自定义名称 "MarkedPred" 它也 returns 9 字符字段标识符 "C",即 188743994 字段 Number18.
用于识别哪个数字字段已使用 MarkedPred 自定义名称进行自定义的子例程:
enter code here
For i = 1 to 20
if (CustomFieldGetName(C) = "MarkedPred") Then
fldMarkedPred = "Number" & i
MarkedPred_Method = C
End If
next i
在给定单个目标任务的情况下向后跟踪网络的子例程:
enter code here
Sub DepPredNew(Tsk As Task)
Dim Dep As TaskDependency
Dim SumT As Task
Dim SubT As Task
'First Section processes for PredSelAll = False = Only Incomplete tasks
If PredSelAll = False Then
If (Tsk.Marked = False) Then
Tsk.Marked = True
'exclude links to external tasks
For Each Dep In Tsk.TaskDependencies
If (Dep.From.ExternalTask = True) Then
Debug.Print ("found Dep.From.ExternalTask= " & Dep.From.ExternalTask)
GoTo NextOne
End If
If ((Dep.From.ID <> Tsk.ID) And (Dep.From.PercentComplete <> 100)) Then
Projectfield = FieldNameToFieldConstant("MarkedPred")
If (Dep.From.Number18 = 0) Then 'And (Dep.From.Predecessors <> "")) Then
LogicOrder = LogicOrder + 1
Dep.From.Number18 = LogicOrder
Tsk.Marked = True
End If
DepPredNew Dep.From
NextOne:
End If
Next Dep
End If
除了硬编码为使用 Number18 字段外,上述所有例程都按预期工作。
我想用 "MarkedPred" 替换 .Number18 的所有实例,使该子例程变得灵活,以便可以使用自定义名称 - MarkedPred 自定义任何可用的数字字段。
我正在尝试使用 Projectfield,例如 Dep.From.Projectfield 而不是使用 Dep.From.Number18.
这可能吗?
我正在使用 TaskDependency 对象来跟踪目标任务的前置任务。然后我想用当前 link 对的值更新 "Number" 字段之一。我在遍历跟踪中的每个 link 时递增此值。我将此数字字段用作排序字段,因此跟踪可以按逻辑顺序而不是任务 ID 顺序显示
我想让这个数字字段成为任何可用的数字字段,用自定义名称标识,因此它是一个自定义字段。我已经尝试使用 .Getfield 和 .SetField 来读取和写入这个递增的数字。
我有一个子例程,用于检查与此过程关联的自定义名称的所有数字字段。我将此过程命名为 CustomNumberNameExists,此函数 returns 一个字符串,例如 Number18,如果 Number18 具有自定义名称 "MarkedPred" 它也 returns 9 字符字段标识符 "C",即 188743994 字段 Number18.
用于识别哪个数字字段已使用 MarkedPred 自定义名称进行自定义的子例程:
enter code here
For i = 1 to 20
if (CustomFieldGetName(C) = "MarkedPred") Then
fldMarkedPred = "Number" & i
MarkedPred_Method = C
End If
next i
在给定单个目标任务的情况下向后跟踪网络的子例程:
enter code here
Sub DepPredNew(Tsk As Task)
Dim Dep As TaskDependency
Dim SumT As Task
Dim SubT As Task
'First Section processes for PredSelAll = False = Only Incomplete tasks
If PredSelAll = False Then
If (Tsk.Marked = False) Then
Tsk.Marked = True
'exclude links to external tasks
For Each Dep In Tsk.TaskDependencies
If (Dep.From.ExternalTask = True) Then
Debug.Print ("found Dep.From.ExternalTask= " & Dep.From.ExternalTask)
GoTo NextOne
End If
If ((Dep.From.ID <> Tsk.ID) And (Dep.From.PercentComplete <> 100)) Then
Projectfield = FieldNameToFieldConstant("MarkedPred")
If (Dep.From.Number18 = 0) Then 'And (Dep.From.Predecessors <> "")) Then
LogicOrder = LogicOrder + 1
Dep.From.Number18 = LogicOrder
Tsk.Marked = True
End If
DepPredNew Dep.From
NextOne:
End If
Next Dep
End If
除了硬编码为使用 Number18 字段外,上述所有例程都按预期工作。 我想用 "MarkedPred" 替换 .Number18 的所有实例,使该子例程变得灵活,以便可以使用自定义名称 - MarkedPred 自定义任何可用的数字字段。 我正在尝试使用 Projectfield,例如 Dep.From.Projectfield 而不是使用 Dep.From.Number18.
这可能吗?