Inhaltsverzeichnis

SDK Oracle Primavera

Mit dem SDK kann zum Beispiel direkt mit ODBC aus Excel auf die Primavera Datenbank zugegriffen werden.

Installation

Bei der Installation des PPM Desktops explicit das Software Development Kit auswählen, kann auch nachträglich erfolgen (Option „Change“ im Installer).

 SDK bei der PPM Installation anwählen

Im Client Installationsverzeichnis unter .\PMSDK\ liegen die Dokumentation (p6_pro_sdk.chm) und die Treiber.

Nach der Software Installation muss der ODBC Treiber eingerichtet werden:

 ODBC Treiber einrichten

Eigenschaften des ODBC Treibers einrichten: Eigenschaften des Treibers einrichten

Bei Bedarf die Log Einstellung auf „verbose“ setzen um die Verbindung zu debuggen.

Support Nodes:

Entwicklung

Für die Verwendung des SDK's unter der Windows Powershell muss diese für XP zuvor installiert werden ( Download über Windows PowerShell 2.0 and WinRM 2.0 for XP )

Beispiel für die Verwendung in der Powershell:

# Refrenz auf das ODBC Object
$ODBCConnect=New-Object System.Data.Odbc.OdbcConnection
 
#DNS für die ODBC Verbindung mit der Primavera SDK
 
$DSN="DSN=Primavera P6 SDK;UID=admin;PWD=xxxxxxx;"
 
#DNS setzen
 
$ODBCConnect.ConnectionString=$DSN
 
#Verbindung öffnen
 
$ODBCConnect.Open()
 
#SQL Statement
 
$sql="select PROJ_ID,PROJ_SHORT_NAME from project"
 
# Kommando ausführung vorbereiten
$command=New-Object System.Data.Odbc.OdbcCommand
$command.Connection=$ODBCConnect
$command.CommandText=$sql
 
#SQL absetzen
$resultset=$command.ExecuteReader()
 
# Anzahl der Treffer
write-host ("Info -- Found {0} Rows" -f $resultset.count)
$results=$resultset.FieldCount
write-host ("Info -- Found {0} Columns" -f $results)
 
# Kopf der Tabelle ausgeben
for ($i=0;$i -lt $results;$i++) {
	# Debug structure of the record
	Write-Host  "Position ::" $i "::" $resultset.GetName($i)"::" $resultset.GetDataTypeName($i)
}
 
# Inhalt ausgeben
while ($resultset.Read()) {
	for ($i = 0; $i -lt $results; $i++) {
		 write-host $resultset.GetName($i) "=" $resultset.GetValue($i)
	}
}
 
#Verbindung wieder schließen
$command.dispose()
$resultset.dispose()
$ODBCConnect.close()
Verbindung schließen nicht vergessen!

Beim ersten Aufruf klappt es meist, gelegentlich kommt folgende Fehlermeldung:

Ausnahme beim Aufrufen von "Open" mit 0 Argument(en):  "ERROR [HZ080] [ATI][OpenRDA ODBC]RDA error: Resource not available - Connect error: da=PMSDK;
Driver=PMSDK;engine=PM;lf=d:\temp\PMSDK.LOG;lo=terse;pg=1;pp=pubuser;pu=pubuser;.
Error returned from engine: VDB.Connect; Exception=TCCustomVirtualRow.Create: Out of memory for TASKSUM row 0
Error number: 0x80004005
ERROR [01000] [Microsoft][ODBC Driver Manager] Der Treiber unterstützt nicht die Version der ODBC-Funktion, die die Anwendung benötigt (siehe SQLSetE
nvAttr)."

Ursache:

Support Nodes:

Quellen

Links: