Ich möchte die Arbeitsstunden aller Tage vom 29/5 bis 30/6 aber im Intervall anzeigen. Es enthält Samstage und Sonntage (arbeitsfreie Tage). Ich benutze TimeScaleData
aber es stoppt automatisch, wenn es einen arbeitsfreien Tag sieht. Ich versuche, (1) zum Zieltag hinzuzufügen, aber es hört immer noch auf, sodass ich die Arbeitsstunden nicht korrekt anzeigen kann.Wie kann man das Datum in TimeScaleData (mpp-Datei lesen) überspringen?
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 { }
}
}
es funktioniert. Bugs und Bugs, ich fühle Stress: v: v Vielen Dank Rachel. – gggg
Hi @Rachel, ich forsche und entdecke Val in VBA. Dieser Beitrag sagte: "" tsv.Value gibt eine leere Zeichenfolge ("") für Zeitscheiben außerhalb des Datumsbereichs des Objekts zurück. Val (tsv.Value) wandelt die leere Zeichenfolge in eine Null um, die viel nützlicher ist. "Ich habe Val() wie Convert.ToDouble in C# verstanden, aber wenn ich es verwende, sehe ich den gleichen Fehler oben. – gggg
Überprüfen Sie den Datentyp von 'tsv.Value', bevor Sie ihn verwenden. Siehe [diese SO-Post zur Typprüfung in C#] (https://stackoverflow.com/questions/983030/type-checking-typeof-gettype-or-is). –