我想顯示從29/5到30/6但是在間隔中的所有日子的工作時間。它包含星期六和星期日(非工作日)。我使用TimeScaleData
,但它在看到非工作日時自動停止。我嘗試將(1)添加到結束日,但仍然停止,所以我無法正確顯示工作時間。如何在TimeScaleData中跳過日期(讀取mpp文件)?
Microsoft.Office.Interop.MSProject.Application app = new Microsoft.Office.Interop.MSProject.Application();
app.FileOpenEx(Path, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
PjPoolOpen.pjPoolReadWrite, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Microsoft.Office.Interop.MSProject.Project pj = app.ActiveProject;
foreach(Resource re in pj.Resources)
{
foreach (Assignment assign in re.Assignments)
{
double h = 0;
var tsvs = assign.TimeScaleData("5/29/2017", "7/1/2017", MSProject.PjAssignmentTimescaledData.pjAssignmentTimescaledWork, MSProject.PjTimescaleUnit.pjTimescaleDays, 1);
try
{
foreach (TimeScaleValue tsv in tsvs)
{
for (int i = 0; i < totalday ; i++)
{
h += Convert.ToDouble(tsv.Value); //sum all value
}
}
}
catch { }
}
}
它的工作原理。臭蟲和臭蟲,我感到壓力:v:v非常感謝瑞秋。 – gggg
嗨@Rachel,我在VBA中研究和檢測函數Val。該帖子說:「」tsv.Value爲對象日期範圍外的時間片返回一個空字符串(「」)。 Val(tsv.Value)將空字符串轉換爲零,這更有用「」。我理解Val()類似於C#中的Convert.ToDouble,但是當我使用它時會看到上面的錯誤。 – gggg
使用前檢查'tsv.Value'的數據類型。看到[這個SO帖子的類型檢查在C#](https://stackoverflow.com/questions/983030/type-checking-typeof-gettype-oris)。 –