Aktuelles MS Project
15.06.2012
Thema: MS Project Server
Weißwurstfrühstück
____________________
PM FORUM 2012
23. + 24.10.2012
Nürnberg
www.pm-forum.de
____________________
| PSI - Lesen eines Custom Lookup Field Text Wertes |
|
Viele CustomFields sind mit Werten aus Lookup Tabellen verknüpft. Diese Werte sind nicht einfach unter der "TEXT_VALUE" Eigenschaft des CustomFields zu finden.
Um an den richtigen Wert heranzukommen benötigen wir drei Schritte:
1. Schritt - Zuerst brauchen wir ein CustomField //CustomField ermitteln: foreach (Microsoft.Office.Project.Server.Schema.CustomFieldDataSet.CustomFieldsRow cfrow in cfDS.CustomFields) { if (cfrow.MD_PROP_NAME == "meinCustomField") { meinCustomFieldUID = cfrow.MD_PROP_UID;//Guid des CustomFields break; } }
2. Schritt - Die Guid des Eintrags ermitteln //Unter der CODE_VALUE Eigenschaft des CustomFields wird die Guid des entsprechenden Eintrags aus der Lookup Tabelle erfasst. Hier ist es wichtig, noch zusätzlich nach der Guid des Vorgangs (Task) zu prüfen (Weil wir uns in diesem Beispiel auf Vorgangsebene bewegen, haben wir eine taskUID):
foreach(Microsoft.Office.Project.Server.Schema.ProjectDataSet.TaskCustomFieldsRow trow in projectDS.TaskCustomFields) { if (trow.MD_PROP_UID == meinCustomFieldUID && trow.TASK_UID == taskUID) { wertUID = trow.CODE_VALUE; break; } }
3. Schritt - Wert aus der Lookup Tabelle holen //Unter LT_VALUE_TEXT wird der eigentliche Text gespeichert:
Microsoft.Office.Project.Server.Schema.LookupTableDataSet lookupDS = new Microsoft.Office.Project.Server.Schema.LookupTableDataSet(); lookupDS = lookUpTabService.ReadLookupTables(null, false, 1033); DataRow ltRowCE = lookupDS.LookupTableTrees.FindByLT_STRUCT_UID(wertUID); if (ltRowCE != null) { stringMeinWert = ltRowCE.Field }
Nun haben wir unter stringMeinWert den eigentlichen Wert gespeichert. Wie wir die PSI Dienste ansprechen wird unter dem folgenden Blogeintrag beschrieben: http://www.grobmanschwarz.de/de-ms-project-blog/331-psi-direkt-ansprechen |


