我正在尝试通过C#中的Project Add-in编辑特定资源分配和特定日期的基准预算成本值:
Project project = Globals.ThisAddIn.Application.ActiveProject;
var projectTask = project.ProjectSummaryTask;
foreach (Assignment item in projectTask.Assignments)
{
var data = item.TimeScaleData(start, end,
PjAssignmentTimescaledData.pjAssignmentTimescaledBaseline1BudgetCost,
PjTimescaleUnit.pjTimescaleMonths, 1);
foreach (TimeScaleValue dataItem in data)
{
dataItem.Value = 1000;
}
}
它工作正常,但每个月的总和没有计算正确:
当我尝试使用与我使用的方法相同的方式更改摘要任务的时标数据时,我收到COM错误:参数值无效。
var data = projectTask.TimeScaleData(start, end,
PjTaskTimescaledData.pjTaskTimescaledBaseline1BudgetCost,
PjTimescaleUnit.pjTimescaleMonths, 1);
foreach (TimeScaleValue dataItem in data)
{
dataItem.Value = 1000;
}
例外:无效的参数值 在Microsoft.Office.Interop.MSProject.Task.TimeScaleData(Object StartDate,Object EndDate,PjTaskTimescaledData Type,PjTimescaleUnit TimeScaleUnit,Int32 Count)。
我做错了什么?
感谢。
答案 0 :(得分:0)
最近,我知道但......当我设置ActualWork时,我不得不添加" h"到最后,基本上将其设置为字符串而不是小数。它有点难以阅读,但看起来你的附加图像有一个" p"在号码之后。请改为dataItem.Value = "1000p";
。
这可能等同于你的foreach循环,但我也发现它从1开始编入索引。我必须使用data[ 1 ].Value = decHours.ToString() + "h";
。