PMS32 Online- Hilfereferenz
PmsOlap - Controlling und andere Auswertungen über PmsOlap
Controlling und andere Auswertungen über PmsOlap
*/ Kurzbeispiel für den Zugriff auf diese Struktur */ Der Zugriff erfolgt über: My.Clients.PmsOlap */ Wird dieses Objekt in einem REPLACE oder einer Schleife SCAN ... ENDSCAN | FOR ... NEXT benötigt */ so sollte vor der Schleife die Objektstruktur in eine Variable geholt werden! */ Die Ausführungsgeschwindigkeit wird dadurch sehr vergrößert! */ Beispiel: */ Definieren einer LOKALEN Variablen LOCAL loPmsOlap AS My.Clients.PmsOlap */ Setzen der Variablen loPmsOlap = My.Clients.PmsOlap */ Jetzt erst die Schleifen durchlaufen... man beachte ALL, dass können ne Menge Sätze sein... REPLACE ALL Feldname1 WITH loPmsOlap.Function1(),Feldname2 WITH loPmsOlap.Function1(), ... */ Oder in einer Schleife... SCAN lvValue = loPmsOlap.Function(Alias.Spalte) + 25 lvValue = loPmsOlap.Function2(m.lvValue) REPLACE Feldname WITH m.lvValue,... ENDSCAN */ Es sind auch geschachtelte Aufrufe möglich...
Rückgabe:[Boolean], Controllingdaten ermitteln. Die Parameter können wahlweise aber in Reihenfolge angegeben werden.
Boolean = My.Clients.PmsOlap.Controlling(tcMandant as String,tcIdk10 as String,tcIde10 as String) Boolean = My.Clients.PmsOlap.Controlling(tcMandant,tcIdk10,tcIde10)
Rückgabe:[Boolean], Erzeugt die benötigten Dateien für die Erzeugung der Würfel
Boolean = My.Clients.PmsOlap.GenerateOlapFiles(tcStructure as String,tvDummy1 as Variant) Boolean = My.Clients.PmsOlap.GenerateOlapFiles(tcStructure,tvDummy1)
Ruft die Value einer Property in der Klasse ab.
Die Parameter: tcProperty as String
tcProperty: Name der Property in der Klasse
Variant = My.Clients.PmsOlap.GetProperty(tcProperty as String,tnAsXMLStructure as Variant) Variant = My.Clients.PmsOlap.GetProperty(tcProperty,tnAsXMLStructure)
*/ Vorausgesetzt wird, dass My bekannt ist... LOCAL lnError AS Number lnError = My.Clients.PmsOlap.GetProperty('nError')
Ruft die Value einer Variablen in der Klasse ab.
Die Parameter: tcVariable as String
Variant = My.Clients.PmsOlap.GetValue(tcScript as String) Variant = My.Clients.PmsOlap.GetValue(tcScript)
*/ Vorausgesetzt wird, dass My bekannt ist... LOCAL lcIdx02 AS String lcIdx02 = My.Clients.PmsOlap.GetValue('My.cIdx02') IF !ISNULL(m.lcIdx02) WAIT WINDOW m.lcIdx02 ELSE */ My in der Klasse nicht bekannt! ENDIF
Rückgabe:[String], Liest die CUBE.DBF in eine C-Structure. 'ARRAY => cube[n,1]'
String = My.Clients.PmsOlap.ReadCubeDbf()
Rückgabe:[String], Liest Informationen aus der Datei PMSINFO.OLAP im PMS-OLAP Verzeichnis
String = My.Clients.PmsOlap.ReadPmsOlapInfoFile(tcOlapDir as String) String = My.Clients.PmsOlap.ReadPmsOlapInfoFile(tcOlapDir)
Rückgabe:[Boolean], Zurücksetzen der CUBE.DBF, wenn die Sicherungstabellen existieren und nicht gelöscht werden konnten!
Boolean = My.Clients.PmsOlap.ResetPmsOlap()
Setzt die Value an die benannte Property.
Die Parameter: tcProperty as String,tvValue as Variant,tnAsObject as Integer
tcProperty: Name der Property in der Klasse
tvValue: Value der Property
tnAsObject: 0=Value, 1=C-Structure, 2=XML
Wird tnAsObject nicht angegeben, so wird 0=Value vorausgesetzt
Variant = My.Clients.PmsOlap.SetProperty(tcProperty as String,tvValue as Variant,tnAsObject as Integer) Variant = My.Clients.PmsOlap.SetProperty(tcProperty,tvValue,tnAsObject)
*/ Als Beispielcode für eine Klasse in einem COM+ Server */ Vorausgesetzt wird, dass My bekannt ist... =My.Clients.PmsOlap.SetProperty('nError',0,0) */ oder auch... =My.Clients.PmsOlap.SetProperty('nError',0)
Rückgabe:[Boolean], Setzt die Werte für cDbfDir, cSysDir, usw. Die Informationen werden aus My.Clients.Path... ermittelt!
Boolean = My.Clients.PmsOlap.Start(tcMandant as String) Boolean = My.Clients.PmsOlap.Start(tcMandant)
Rückgabe:[Boolean], Dient zum Ausführen des OLAP Servers nach der Erstellung der Tabellen...
Boolean = My.Clients.PmsOlap.StartPmsOlap(tcExeDir as String,tcOlapDir as String) Boolean = My.Clients.PmsOlap.StartPmsOlap(tcExeDir,tcOlapDir)
Variant = My.Clients.PmsOlap.Terminate()
Mit dieser Methode kann eine Protokollierung div. Informationen in einem LOG File erfolgen.
Diese Methode ist 'nur' bei den NameSpace Servern von PMS zu finden!
Variant = My.Clients.PmsOlap.WriteSettings(tcWann as String) Variant = My.Clients.PmsOlap.WriteSettings(tcWann)
*/ Als Beispielcode für eine Klasse in einem COM+ Server */ Vorausgesetzt wird, dass My bekannt ist... =My.Clients.PmsOlap.WriteSettings('Heute um 15:00Uhr') */ oder auch... =My.Clients.PmsOlap.WriteSettings(TTOC(DATETIME(),1)) && Ausgabe: JJJJMMTThhmmss
Wert:[String], Bedingung, ob eine Trendtabelle geschrieben werden soll (Ausdruck!)
String = My.Clients.PmsOlap.CopyTrendTableIf
Wert:[String], Nach welchen Spalten wird die Trendtabelle gruppiert? 'DATUM' ist zwingend!
General = My.Clients.PmsOlap.GroupByTrend
Wert:[String], Kalkulationsschema für EK-Daten
Number = My.Clients.PmsOlap.Idv03E
Führt einen Reset in der Klasse durch
Boolean = My.Clients.PmsOlap.LReset
My.Clients.PmsOlap.LReset = .T.
Wert:[String], Die Tabelle K10 des Mandanten wird ausgewertet.
Number = My.Clients.PmsOlap.NameOfInTable
Wert:[String], Name der Ausgabetabelle CUBE_CON.DBF. Die Tabelle muss OHNE Extension angegeben werden.
Number = My.Clients.PmsOlap.NameOfOutTable
Wert:[String], Name der Trendtabelle. Verzeichnis siehe cDestDir!
Number = My.Clients.PmsOlap.NameOfTrendTable
Wert:[Boolean], Wenn .T., werden die Werte aus Q02 einzeln ausgewertet! Spesen, Übernachtung, ...
Variant = My.Clients.PmsOlap.Q02Einzelauswertung
Wert:[String], Wenn ein Script nach dem Schreiben von NameOfOutTable ausgeführt werden soll
Variant = My.Clients.PmsOlap.ScriptOfOtherOutTable
Wert:[String], Wenn ein Script benötigt wird, dass nach dem Erstellen der TrendTable ausgeführt werden soll
Variant = My.Clients.PmsOlap.ScriptOfOtherTrendTable
Wert:[String], Falls in die Auswertung eingegriffen werden soll, kann hier ein Script hinterlegt werden.
Variant = My.Clients.PmsOlap.Sql13User
Wert:[String], Falls ein SQL Select benötigt wird! In dem Cursor müssen die Spalten IDK10 und IDC63 vorhanden sein!
Variant = My.Clients.PmsOlap.SqlOfInTable
Wert:[Boolean], Es wird das Flag K10.E10EDP ausgewertet. Dieses kann per Menüerweiterung gesetzt/gelöscht werden
Variant = My.Clients.PmsOlap.UseK10_E10Edp
Wert:[Boolean], Es wird kein Zeit- LOG geschrieben. Standard wird diese Property von My.lWriteLog gesetzt!
String = My.Clients.PmsOlap.WritingLog
Wert:[Boolean], Keine Zwischen- SQLs protokollieren.
String = My.Clients.PmsOlap.WritingSqls
Diese Property gibt es nur bei NameSpace Servern, dies sind Programmteile, die in einem geschützten Speicherbereich ablaufen. Sollten Sie mal von außen auf den NameSpace von PMS32 zugreifen und es fehlt Ihnen die Aufrufinformationen, so kann obiger String aus der Registry ermittelt werden.
String = My.Clients.PmsOlap._Clsid
LOCAL lcClsID AS String lcClsID = My.Clients.PmsOlap._Clsid WAIT WINDOW m.lcClsID
Diese Property gibt es nur bei NameSpace Servern, dies sind Programmteile, die in einem geschützten Speicherbereich ablaufen.
String = My.Clients.PmsOlap._ComServer
LOCAL lcComServer AS String lcComServer = My.Clients.PmsOlap._ComServer WAIT WINDOW m.lcComServer
Boolean = My.Clients.PmsOlap._Isreleased_
String = My.Clients.PmsOlap._Name
Variant = My.Clients.PmsOlap._Pcreleaselog_
Die Property _ServerName gibt den kompletten Klassennamen der EXE bzw. DLL zurück.
Mit diesem Namen und dem Namen der EXE/DLL kann dann die COM+ Klasse instanziiert werden.
Gleiches kann man auch aus den Eigenschaften der Programmklasse EXE/DLL herausfinden.
String = My.Clients.PmsOlap._ServerName
LOCAL lcServerName AS String lcServerName = My.Clients.PmsOlap._ServerName WAIT WINDOW m.lcServerName
Die Property gibt den Startmodus des Aufrufers zurück. Es gibt insgesamt 6 Modi:
0 - Unter VFP Entwicklung
1 - Unter VFP-COM Steuerung
2 - Start als COM.EXE
3 - Start als COM.DLL in Singleprocess
4 - Start als EXE (Standard Programmaufruf)
5 - Start als COM.DLL in Multiprocess
Number = My.Clients.PmsOlap._StartMode
*/ Abfrage des Modus WAIT WINDOW My.Clients.PmsOlap._StartMode
Gibt den verwendeten Speicher des Namespace zurück.
Rückgabe ist Byte.
Integer = My.Clients.PmsOlap._Sys1016
LOCAL liBytes AS Integer */ Abfrage des Speichers liBytes = My.Clients.PmsOlap._Sys1016 WAIT WINDOW LTRIM(STR(m.liBytes/1024))+" kB"
Versionsnummer nach PMS32 Konvention. H.U.DD.SSHH.bbbb
Die Property _Version gibt die Programmversion (gilt für DLL, EXE und auch für APP) zurück.
H - Hauptversion
U - Unterversion
DD - Datenbankversion
SS - Servicepack
HH - Hotfix
bbbb- Buildnumber
String = My.Clients.PmsOlap._Version
WAIT WINDOW My.Clients.PmsOlap._Version
VFP Version der VFP-9 dll.
String = My.Clients.PmsOlap._VfpVersion
WAIT WINDOW My.Clients.PmsOlap._VfpVersion
Mit dieser Property kann der Name der Applikation abgerufen werden.
String = My.Clients.PmsOlap.cAppNameExe
*/ Als Beispielcode für eine Klasse in einem COM+ Server */ Vorausgesetzt wird, dass My bekannt ist... LOCAL lcName AS String lcName = My.Clients.PmsOlap.cAppNameExe
String = My.Clients.PmsOlap.cClass
Pfad der Mandantentabellen
Normalerweise zu finden unter \\server\freigabe\...\pms32\daten\mandant\
String = My.Clients.PmsOlap.cDbfDir
IF !DIRECTORY(My.Clients.PmsOlap.cDbfDir) */ Benötigte Pfade sollten eigentlich da sein! =MESSAGEBOX("Pfad fehlt:" + My.Clients.PmsOlap.cDbfDir,64,"Mandanten Verzeichnis") ENDIF
Wert:[String], Zielverzeichnis der Ausgabetabelle(n). Wenn nicht angegeben, dann wird der Mandant genommen.
String = My.Clients.PmsOlap.cDestDir
Mandanten-ID. Diese ist in der Datei pms32.pth gespeichert und dient dort zur Zuordnung des Mandante und dessen Pfade.
Auszug aus der Pfaddatei pms32.pth:
*/ Verzeichnis der Microcube - Dateien. Wenn leer dann gleich: cDbfdir
cCubdir = ""
*/ Ein 'anderes' Dokumentenverzeichnis kann angegeben werden. Wenn nicht angegeben dann gleich: cDbfdir+'docs\'
*/ cDocDir = ""
*/ Verzeichnis der Mandantentabellen. Hier ein Beispiel mit UNC Pfaden.
*/ Wird die Freigabe auf dem Server 'versteckt' \pms$\ angegeben, so kann ein Cryptovirius das Verzeichnis nicht finden!
cDbfdir = "\\server\pms$\pms32\daten\demo.32\"
*/ Verzeichnis der Reporttabellen
*/ Gibt man Bilddateien in einem Report mit My.Clients.Path.cFrxDir+'BILDNAME.JPG' an, so kann PMS32 einfach auf einen anderen Rechner kopiert werden!
cFrxdir = "\\server\pms$\pms32\reports\demo.32\"
*/ Beschreibung des Mandanten
cIcx02 = "TESTMANDANT DEMO"
*/ ID der Firmenparameter zum Mandant.
cIdx09 = "DEMO"
*/ Kann unter der Mandanteninformation leer sein, wenn für mehrere Mandanten das 'gleiche' Systemverzeichnis gültig ist.
cSysdir = ""
*/ Willkommens-Information als Hintergrundbild in PMS32
cWelcome= "pms32.htm"
*/ Nummer des Mandanten, beim Einsatz eines BarcodeScanners sollte diese Nummer EINDEUTIG sein!
nNumber = 1
<>
String = My.Clients.PmsOlap.cIdx02
*/ Abfrage der Mandanten-ID WAIT WINDOW My.Clients.PmsOlap.cIdx02 */ Wenn man mittels VFP Zugriff auf die Applikation braucht: */ 1. vfp9.exe öffenen */ 2. In das Startverzeichnis von PMS32 wechseln (MUSS) CD c:\pms\pms32 */ 3. My Instanziieren My = NEWOBJECT("pmsmy","pmsmyhandler.vcx","pmsmyhandler.app") */ 4. Den letzten aktuellen Mandanten zuweisen My.cIdx02 = My.cIdx02 */ 5. Los gehts...
Wert:[String], ID der Firmenparameter
String = My.Clients.PmsOlap.cIdx09
Verzeichnis der LOG-Dateien
Normalerweise zu finden unter c:\benutzer\
Nach Beenden von PMS32 sind dir Daten unter: \\server\pms$\pms32\log\TERMINAL # USER\ zu finden...
String = My.Clients.PmsOlap.cLogDir
IF !DIRECTORY(My.Clients.PmsOlap.cLogDir) */ Benötigte Pfade sollten eigentlich da sein! =MESSAGEBOX("Pfad fehlt:" + My.Clients.PmsOlap.cLogDir,64,"LOG-Dateien") ENDIF
Methode in der der letzte Fehler auftrat.
Aufbau: [Fehlernummer] [Methode] [Zeilennummer] [Message]
String = My.Clients.PmsOlap.cMethod
*/ Abruf... WAIT WINDOW My.Clients.PmsOlap.cMethod
Wert:[String], Standardverzeichnis der PMS-Olap Cubes. Diese liegt normalerweise unterhalb von ...\Pms32\Daten\PmsOlap\ und hat
String = My.Clients.PmsOlap.cOlDbDir
Wert:[String], Verzeichnis der EXE Dateien, die zu PMS-Olap gehöhren. Normalerweise cVfpDir aus den Pfadeinstellungen. ...\Pms32
String = My.Clients.PmsOlap.cOlExDir
Wert:[String], Hauptverzeichnis der PMS-Olap Tabellen. Diese liegt normalerweise unterhalb von ...\Pms32\Daten\ und hat den Name
String = My.Clients.PmsOlap.cOlapDir
Reset C-Structure
Diese Property ist normalerweise WriteOnly! Sie dient zum Zurücksetzen verschiedener Informationen.
#DEFINE CRI_REMOVE_MENUES "REMOVE-MENUES"
#DEFINE CRI_REMOVE_CSFILES "REMOVE-CS-FILES"
#DEFINE CRI_REMOVE_SCRIPTS "REMOVE-CS-SCRIPTS"
#DEFINE CRI_CHANGE_IDX09 "CHANGE-IDX09"
#DEFINE CRI_LOGIN "USER_LOGIN"
String = My.Clients.PmsOlap.cResetInfos
*/ Verschiedene RESET Befehle... My.Clients.PmsOlap.cResetInfos = "REMOVE-MENUES" My.Clients.PmsOlap.cResetInfos = "REMOVE-CS-FILES" My.Clients.PmsOlap.cResetInfos = "REMOVE-CS-SCRIPTS" My.Clients.PmsOlap.cResetInfos = "CHANGE-IDX09" My.Clients.PmsOlap.cResetInfos = "USER_LOGIN" */ Je nach Klasse wird ein entsprechender RESET ausgeführt!
Wert:[String], Pfad und Dateiname der INI Datei. 'Controlling.ini'. Die Datei wird in 'cStructureString' gespeichert!
String = My.Clients.PmsOlap.cStructureFile
Wert:[String], String der INI Datei. 'Controlling.ini'.
String = My.Clients.PmsOlap.cStructureString
Verzeichnis der Systemtabellen von PMS32
Das Verzeichnis ist normalerweise unter: \\server\pms$\pms32\dbf\ zu finden...
String = My.Clients.PmsOlap.cSysDir
IF !DIRECTORY(My.Clients.PmsOlap.cSysDir) */ Benötigte Pfade sollten eigentlich da sein! =MESSAGEBOX("Pfad fehlt:" + My.Clients.PmsOlap.cSysDir,64,"Systemverzeichnis") ENDIF
Temporäres Verzeichnis für verschiedene Zwischenspeicherungen
Das Verzeichnis ist normalerweise unter: c:\benutzer\
String = My.Clients.PmsOlap.cTmpDir
*/ Same as: ADDBS(SYS(2023)) IF !DIRECTORY(My.Clients.PmsOlap.cTmpDir) */ Benötigte Pfade sollten eigentlich da sein! =MESSAGEBOX("Pfad fehlt:" + My.Clients.PmsOlap.cTmpDir,64,"Temporäres Verzeichnis") ENDIF
Wert:[String], Kalkulationsschema für Fertigungsdaten
Number = My.Clients.PmsOlap.idv03F
Wert:[String], Kalkulationsschema für Lagerdaten
Number = My.Clients.PmsOlap.idv03L
Wert:[String], Kalkulationsschema für VK-Daten
Number = My.Clients.PmsOlap.idv03V
Thermosanzeige bei der Ausführung
Boolean = My.Clients.PmsOlap.lShowThermos
My.Clients.PmsOlap.lShowThermos = .T.
Fehlernummer des letzten Fehlers.
Ist der Wert kleiner null, so handelt es sich um einen logischen Fehler.
Number = My.Clients.PmsOlap.nError
WAIT WINDOW My.Clients.PmsOlap.nError
Zeilennummer, in der der letzte Fehler auftrat
Number = My.Clients.PmsOlap.nLine
WAIT WINDOW My.Clients.PmsOlap.nLine
Object = My.Clients.PmsOlap.oClass
Siehe auch : Hauptmenü / Hauptindex / Such Index / Cursor Index / Programm Module / Tabellen Index / Tabellenmodule / Masken Index / Programmcode Index / Servicepacks / My.Struktur / Funktionen / Sonstiges Index
Lokale Benutzerhilfe : Meine eigene Hilfe / Zurück zur PMS32 - Hilfe
Dateiversion:1.0.04#3648 - H.U.DD#SSFF 02.12.2022
Senden Sie Ihren Kommentar zu diesem Thema an das Entwicklungsteam von PMS32
Weitere Informationen finden Sie unter der aktuellen
PMS32 WEB-Hilfe
Die Informationen dieser Mitteilung sind vertraulich und nur für Sie bestimmt. Unbefugtes Weiterleiten,
Veröffentlichen, Kopieren usw. sind untersagt und werden gerichtlich verfolgt.
© PMS Compelec GmbH 2022 ® el-Projekt