Je souhaite afficher les heures de travail de tous les jours du 29/5 au 30/6, mais dans l'intervalle. Il contient les samedis et dimanches (jours non ouvrables). J'utilise TimeScaleData
mais il s'arrête automatiquement quand il voit un jour chômé. J'essaie d'ajouter (1) au jour de la fin mais il s'arrête toujours, donc je ne peux pas afficher correctement les heures de travail.Comment faire pour passer la date dans TimeScaleData (lire le fichier 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 { }
}
}
cela fonctionne. Bugs et bugs, je ressens du stress: v: v Merci beaucoup Rachel. – gggg
Salut @Rachel, je recherche et détecte funtion Val en VBA. Cet article disait: "" tsv.Value renvoie une chaîne vide ("") pour les tranches de temps en dehors de la plage de dates de l'objet. Val (tsv.Value) convertit la chaîne vide à un zéro qui est beaucoup plus utile "" J'ai compris Val() comme Convert.ToDouble en C# mais quand je l'utilise voit l'erreur même ci-dessus. – gggg
Vérifiez le type de données de 'tsv.Value' avant de l'utiliser. Voir [cet article SO pour la vérification de type dans C#] (https://stackoverflow.com/questions/983030/type-checking-typeof-gettype-or-is). –