PMS32 Online- Hilfereferenz

MY.SYSTEMS.DATADICT

DataDict - COM+ Datadictionary von PMS


Hilfe: Tabelleninformationen
COM+ Datadictionary von PMS


Code: Tabelleninformationen
*/ Kurzbeispiel für den Zugriff auf diese Struktur
*/ Der Zugriff erfolgt über: My.Systems.DataDict
*/ 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 loDataDict AS My.Systems.DataDict
*/ Setzen der Variablen
loDataDict = My.Systems.DataDict
*/ Jetzt erst die Schleifen durchlaufen... man beachte ALL, dass können ne Menge Sätze sein...
REPLACE ALL Feldname1 WITH loDataDict.Function1(),Feldname2 WITH loDataDict.Function1(), ...
*/ Oder in einer Schleife...
SCAN
	lvValue = loDataDict.Function(Alias.Spalte) + 25
	lvValue = loDataDict.Function2(m.lvValue)
	REPLACE Feldname WITH m.lvValue,...
ENDSCAN
*/ Es sind auch geschachtelte Aufrufe möglich...

Memberliste von DataDict


Liste der Methoden von DataDict


DBB01FieldList() - Standardfelder der Tabelle B01

Rückgabe:[String], Feldliste der Tabelle B01 für den Export nach EXCEL
Hilfeinformation
Rückgabe:[String], Feldliste der Tabelle B01 für den Export nach EXCEL

Aufrufinformation
String = My.Systems.DataDict.DBB01FieldList(tcDbf as String,tlAllFields as Boolean)
String = My.Systems.DataDict.DBB01FieldList(tcDbf,tlAllFields)
Codeinformation


DBC6xFieldList() - Standardfelder der Adressen

Rückgabe:[String], Gibt die Feldliste bezüglich des Exports für EXCEL anhand der Adresstabellen zurück. ID und IC Feld ist immer
Hilfeinformation
Rückgabe:[String], Gibt die Feldliste bezüglich des Exports für EXCEL anhand der Adresstabellen zurück. ID und IC Feld ist immer

Aufrufinformation
String = My.Systems.DataDict.DBC6xFieldList(tcDbf as String,tlAllFields as Boolean)
String = My.Systems.DataDict.DBC6xFieldList(tcDbf,tlAllFields)
Codeinformation


DBCxxFieldList() - Standardfelder der C-Tabellen

Rückgabe:[String], Gibt die Feldliste für den Export via EXCEL zurück. Betrifft hier C-Tabellen
Hilfeinformation
Rückgabe:[String], Gibt die Feldliste für den Export via EXCEL zurück. Betrifft hier C-Tabellen

Aufrufinformation
String = My.Systems.DataDict.DBCxxFieldList(tcDbf as String,tlAllFields as Boolean)
String = My.Systems.DataDict.DBCxxFieldList(tcDbf,tlAllFields)
Codeinformation


DBGetCheckSum() - Checksumme der Tabellen

Rückgabe:[Variant], Gibt eine SEMIKOLON separierte Liste mit Tabellen oder der angegebenen Tabelle zurück in der die CheckSummen
Hilfeinformation
Rückgabe:[Variant], Gibt eine SEMIKOLON separierte Liste mit Tabellen oder der angegebenen Tabelle zurück in der die CheckSummen

Aufrufinformation
Variant = My.Systems.DataDict.DBGetCheckSum(tcDbf as String,tcCSExpression as String,tlNeeded as Boolean,tcPath as String)
Variant = My.Systems.DataDict.DBGetCheckSum(tcDbf,tcCSExpression,tlNeeded,tcPath)
Codeinformation


DBGetCursorForImport() - Feldliste für Import

Rückgabe:[String], Erzeugt einen Cursor für den Import von Daten anhand einer Feldliste und einer angegebenen DBF.
Hilfeinformation
Rückgabe:[String], Erzeugt einen Cursor für den Import von Daten anhand einer Feldliste und einer angegebenen DBF.

Aufrufinformation
String = My.Systems.DataDict.DBGetCursorForImport(tcDbf as String,tcFieldList as String)
String = My.Systems.DataDict.DBGetCursorForImport(tcDbf,tcFieldList)
Codeinformation


DBGetDbf4Field() -

Rückgabe:[String], Gibt eine Liste mit Tabellen zurück (Trennung Semikolon) die ein entsprechendes Feld haben.
Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.DBGetDbf4Field(tcField as String,tvType as String,tvLen as Integer,tvDecimals as Integer)
String = My.Systems.DataDict.DBGetDbf4Field(tcField,tvType,tvLen,tvDecimals)
Codeinformation


DBGetExport() -

Rückgabe:[String], Erstellt eine Feldliste für den Export an Excel
Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.DBGetExport(tcTable as String,tiWhat as Integer)
String = My.Systems.DataDict.DBGetExport(tcTable,tiWhat)
Codeinformation


DBGetImport() -

Rückgabe:[Variant], Ermittelt Daten zum Import von Tabellen. tiToDo = 0-Create,1-Recordset,2-Export,3-Import. tcImp=ImportCursor
Hilfeinformation

Aufrufinformation
Variant = My.Systems.DataDict.DBGetImport(tcImp as String,tiToDo as Integer,tcDbf as String)
Variant = My.Systems.DataDict.DBGetImport(tcImp,tiToDo,tcDbf)
Codeinformation


DBGetInfo() - Informationen des DataDictionaries

Rückgabe:[Boolean], Gibt Informationen bezüglich des DataDictionaries zurück.
Hilfeinformation
Rückgabe:[Boolean], Gibt Informationen bezüglich des DataDictionaries zurück.

Aufrufinformation
Boolean = My.Systems.DataDict.DBGetInfo(tnSum as Double,tnCnt as Double,tnSumI as Double,tnSumR as Double,tnSumD as Double,tnCntI as Double,tnCntR as Double,tnCntD as Double)
Boolean = My.Systems.DataDict.DBGetInfo(tnSum,tnCnt,tnSumI,tnSumR,tnSumD,tnCntI,tnCntR,tnCntD)
Codeinformation


DBGetPmsInfo() -

Rückgabe:[Variant], Gibt eine Information Der PMS-Datenbanken zurück
Hilfeinformation

Aufrufinformation
Variant = My.Systems.DataDict.DBGetPmsInfo(tcName as String,tcType as String,tcProperty as String)
Variant = My.Systems.DataDict.DBGetPmsInfo(tcName,tcType,tcProperty)
Codeinformation


DBGetVerInfo() -

Rückgabe:[String], GIbt die Versions-Informationen über PMS32 als C-Structure zurück
Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.DBGetVerInfo()
Codeinformation


DBGetXmlInfo() -

Rückgabe:[String], Gibt einen XML String mit Informationen des Dictionaries zurück. Filter wird auf die Tabellen des Dictionarie
Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.DBGetXmlInfo(tcFilter as String,tcIFinfo as String)
String = My.Systems.DataDict.DBGetXmlInfo(tcFilter,tcIFinfo)
Codeinformation


DBQ0xFieldList() - Feldliste für Q01 und Q02 nach EXCEL

Rückgabe:[String], Gibt die Feldliste für die Tabellen Q01 und Q02 zurück. Wird für den Export nach EXCEL benötigt.
Hilfeinformation
Rückgabe:[String], Gibt die Feldliste für die Tabellen Q01 und Q02 zurück. Wird für den Export nach EXCEL benötigt.

Aufrufinformation
String = My.Systems.DataDict.DBQ0xFieldList(tcDbf as String,tlAllFields as Boolean)
String = My.Systems.DataDict.DBQ0xFieldList(tcDbf,tlAllFields)
Codeinformation


DbGetProperty() - Informationen

Rückgabe: [Variant], Gibt verschiedene Werte des Dictionaries zurück. Siehe auch PMS_03.XLS.
Hilfeinformation
Rückgabe: [Variant], Gibt verschiedene Werte des Dictionaries zurück. Siehe auch PMS_03.XLS.

Aufrufinformation
Variant = My.Systems.DataDict.DbGetProperty(tcName as String,tcProperty as String,tcOptions as String,tnReturn as Integer)
Variant = My.Systems.DataDict.DbGetProperty(tcName,tcProperty,tcOptions,tnReturn)
Codeinformation


DbfF5XGetFieldList() - temp. Tabelle

Rückgabe:[String], Erstellt eine temporäre Tabelle und gibt den Dateinamen zurück.
Hilfeinformation
Rückgabe:[String], Erstellt eine temporäre Tabelle und gibt den Dateinamen zurück.

Aufrufinformation
String = My.Systems.DataDict.DbfF5XGetFieldList(tcx as Variant,tcWhere as String)
String = My.Systems.DataDict.DbfF5XGetFieldList(tcx,tcWhere)
Codeinformation


GetDbcInfos() -

Rückgabe:[String], Gibt die Informationen bezüglich der Datenbankeinstellung zurück
Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.GetDbcInfos()
Codeinformation


GetDbfDefaults() - Setzen der Defaults an einer Tabelle

Rückgabe:[String], Gibt die Defaultwerte der angegebenen Tabelle als String für EXECSCRIPT() zurück. Ähnliche Funktion wie unter
Hilfeinformation
Diese Methode gibt einen String zurück, mit dem die Standardwerte (neuer Datensatz) ander angegebenen Tabelle gesetzt werden können.

Aufrufinformation
String = My.Systems.DataDict.GetDbfDefaults(tcDbf as String,tcObject as String,tlCheck as Boolean,tlNull as Boolean)
String = My.Systems.DataDict.GetDbfDefaults(tcDbf,tcObject,tlCheck,tlNull)
Codeinformation
*/ Programmcode zum Abrufen von DEFAULT Werten einer Tabelle
*/ Beispiel Anhand der Tabelle B01 - Artikelstamm

*/ Hier wird wieder My instanziiert, was unter PMS32C, PMS32D bzw. PMS32K nicht notwendig ist...
PUBLIC My AS My
My = NEWOBJECT("pmsmy","pmsmyhandler.vcx","pmsmyhandler.app")
*/ Zuweisen des letzten aktiven Mandanten
My.cIdx02=My.cIdx02

LOCAL lcExec AS String
*/ Jetzt soll ein Cursor mit "neuen" Artikel gefüllt werden...
SELECT *,.F. AS __Changed,.F. AS __New FROM (My.Clients.Path.cDbfDir+'b01.dbf') ;
	INTO CURSOR qB01New NOFILTER READWRITE
FOR m.lni = 1 TO 9
	*/ Es werden neun neue Artikel angelegt...
	INSERT INTO qB01New (Artnr) VALUES ("ART."+LTRIM(STR(m.lni)))
NEXT m.lni

*/ Update der neuen Werte mit einem REPLACE
lcExec = My.Systems.DataDict.GetDbfDefaults("B01","qB01New",.T.)
*/ Der String muss erst noch aufbereitet werden! Er kann nicht verarbeitet werden mit der Rückgabe!
*/	" := "	=> Zuweisungsoperator, dieser MUSS ausgetauscht werden!
*/	" :; "	=> Trennoperator, auch dieser MUSS ausgetauscht werden!
lcExec = [REPLACE ALL ]+STRTRAN(STRTRAN(m.lcExec," :; "," , ")," := "," WITH ") + ",__Changed WITH .T.,__New WITH .T."
SELECT qB01New
=EXECSCRIPT(m.lcExec)

*/ Mit einem SQL-Update
lcExec = My.Systems.DataDict.GetDbfDefaults("B01","qB01New",.T.)
lcExec = [UPDATE qB01New SET ]+STRTRAN(STRTRAN(m.lcExec," :; "," , ")," := "," = ") + ",__Changed = .T.,__New = .T."
SELECT qB01New
=EXECSCRIPT(m.lcExec)

*/ Über Memory Variablen...
lcExec = STRTRAN(My.Systems.DataDict.DbGetProperty("B01","","FIELDLIST"),";",",")
*/	ARTNR;BETRH;EIART;EILAGE;EKZUORD;IDC72;IDC98;IPY01LKZ;LSGUT;MGLOS;NOTRESU;RABATTJN;SHKENN;SKONTJN;STATUS;...
PRIVATE &lcExec,__Changed,__New
lcExec = My.Systems.DataDict.GetDbfDefaults("B01","M",.T.)
lcExec = STRTRAN(STRTRAN(m.lcExec," :; ",CHR(13)+CHR(10))," := "," = ")
SELECT qB01New
SCAN
	SCATTER MEMO MEMVAR
	=EXECSCRIPT(m.lcExec)
	STORE .T. TO __Changed,__New
	GATHER MEMO MEMVAR
ENDSCAN

*/ Über ein Datensatz-Objekt
PRIVATE poRec
lcExec = My.Systems.DataDict.GetDbfDefaults("B01","poRec",.T.) + [ :; poRec.__Changed := .T. :; poRec.__New := .T.]
lcExec = STRTRAN(STRTRAN(m.lcExec," :; ",CHR(13)+CHR(10))," := "," = ")
SELECT qB01New
SCAN
	SCATTER MEMO NAME poRec
	=EXECSCRIPT(m.lcExec)
	GATHER MEMO NAME poRec
ENDSCAN

*/ Wenn man einen MIX-MODE benötigt...
*/ Einen leeren Cursor erstellen
SELECT * FROM qB01New WHERE 1=0 INTO CURSOR qNew NOFILTER READWRITE
*/ Bei der Angabe des Speichers ist dann: <nach>|<von> anzugeben!
*/ Die Trennzeichen sind auch hier ' := ' und ' :; '
lcExec = My.Systems.DataDict.GetDbfDefaults("B01","poRec|qB01New",.T.) + [ :; poRec.__Changed := .T. :; poRec.__New := .T.]
lcExec = STRTRAN(STRTRAN(m.lcExec," :; ",CHR(13)+CHR(10))," := "," = ")
SELECT qB01New
SCAN
	SCATTER MEMO NAME poRec BLANK
	=EXECSCRIPT(m.lcExec)
	INSERT INTO qNew FROM NAME poRec
ENDSCAN

*/ Aufruf der Methode GetDbfDefaults()
*/	tcDbf		=> Angabe der Tabelle
*/	tcObject	=> Zielspeicher|Quellspeicher
*/	tlCheck		=> .T./.F., Standardwert nur wenn Leer / Immer Standardwert

*/ Noch ein Hinweis, ich würde das Setzen der Standardwerte über einen REPLACE bzw. SQL - Update vornehmen, da beide Scripte NUR EINMAL compiliert werden!
*/ Bei den Methoden über ein Objekt bzw. des Memory wird für jeden Datensatz der Scriptcode compiliert! Zeitkritisch!
*/ Oder man packt den Scan ... Endscan mit in das Script hinein!
*/ Beispiel:
lcExec = My.Systems.DataDict.GetDbfDefaults("B01","loRec",.T.) + [ :; loRec.__Changed := .T. :; loRec.__New := .T.]
lcExec = STRTRAN(STRTRAN(m.lcExec," :; ",CHR(13)+CHR(10))," := "," = ")
*/ Hier kann das RecordObject LOCAL definiert werden, da dies ja im Script passiert!
lcExec = ;
	"LOCAL loRec" + CHR(13)+CHR(10) +;
	"SELECT qB01New" + CHR(13)+CHR(10) +;
	"SCAN" + CHR(13)+CHR(10) +;
		"SCATTER MEMO NAME loRec" + CHR(13)+CHR(10) +;
		m.lcExec + CHR(13)+CHR(10) +;
		"GATHER MEMO NAME loRec" + CHR(13)+CHR(10) +;
	"ENDSCAN" + CHR(13)+CHR(10)
*/ Dieser Code wird NUR EINMAL compiliert!
=EXECSCRIPT(m.lcExec)

*/ Warum __Changed und __New? Damit kann über eine recht einfache Methode das Update erzwungen werden...
LOCAL llDone AS Boolean
llDone = My.Clients.SQL.SQLUpdate(SET("Datasession"),"B01","qB01New","IDB01")		&& Gibt .T./.F. zurück...

GetDbfFieldFilter() -

Gibt die Filtereinstellungen für eine Tabelle zurück
Hilfeinformation

Aufrufinformation
Variant = My.Systems.DataDict.GetDbfFieldFilter(tcTable as String,tlWithTX as Boolean)
Variant = My.Systems.DataDict.GetDbfFieldFilter(tcTable,tlWithTX)
Codeinformation


GetDbfFieldList() - Feldliste

Rückgabe:[String], Gibt einen String zurück, der mit dem genannten tcInfo Werten der genannten Tabelle gefüllt ist
Hilfeinformation
Rückgabe:[String], Gibt einen String zurück, der mit dem genannten tcInfo Werten der genannten Tabelle gefüllt ist

Aufrufinformation
String = My.Systems.DataDict.GetDbfFieldList(tcDbf as String,tcFieldInfo as String,tcObject as String,tcCheck as String,tcClass as String,tcFilter as String)
String = My.Systems.DataDict.GetDbfFieldList(tcDbf,tcFieldInfo,tcObject,tcCheck,tcClass,tcFilter)
Codeinformation
*/ Programmcode zum Abrufen von DEFAULT Werten einer Tabelle
*/ Beispiel Anhand der Tabelle B01 - Artikelstamm

*/ Hier wird wieder My instanziiert, was unter PMS32C, PMS32D bzw. PMS32K nicht notwendig ist...
PUBLIC My AS My
My = NEWOBJECT("pmsmy","pmsmyhandler.vcx","pmsmyhandler.app")
*/ Zuweisen des letzten aktiven Mandanten
My.cIdx02=My.cIdx02

LOCAL lcExec AS String
*/ Jetzt soll ein Cursor mit "neuen" Artikeln gefüllt werden...
SELECT *,.F. AS __Changed,.F. AS __New FROM (My.Clients.Path.cDbfDir+'b01.dbf') ;
	INTO CURSOR qB01New NOFILTER READWRITE
FOR m.lni = 1 TO 9
	*/ Es werden neun neue Artikel angelegt...
	INSERT INTO qB01New (Artnr) VALUES ("ART."+LTRIM(STR(m.lni)))
NEXT m.lni

*/ Abruf der DEFAULT Werte für den Artikelstamm für einen REPLACE auf dem angegebenen Cursor
lcExec = My.Systems.DataDict.GetDbfFieldList("B01","DEFAULT","#qB01New.") + ",__Changed WITH .T.,__New WITH .T."
*/ Der String sieht dann in etwa so aus:
*/	qB01New.ARTNR WITH IIF(EMPTY(qB01New.ARTNR),IIF(My.Clients.Fips.YX_autoart,CAST(My.Functions.Internals.NextNr("ARTNR") as C(25)),SPACE(25)),qB01New.ARTNR),qB01New.AUSPFLICHT WITH IIF(EMPTY(qB01New.AUSPFLICHT),.F.,qB01New.AUSPFLICHT),qB01New.BBAS WITH IIF(EMPTY(qB01New.BBAS),My.Clients.Fips.YX_BBAS,qB01New.BBAS),qB01New.BBZUG WITH IIF(EMPTY(qB01New.BBZUG),0,qB01New.BBZUG),qB01New.BMFEST WITH IIF(EMPTY(qB01New.BMFEST),0,qB01New.BMFEST),qB01New.BMMAX WITH IIF(EMPTY(qB01New.BMMAX),0,qB01New.BMMAX),qB01New.BMMIN WITH IIF(EMPTY(qB01New.BMMIN),0,qB01New.BMMIN),qB01New.BMWI WITH IIF(EMPTY(qB01New.BMWI),0,qB01New.BMWI),qB01New.BSYST WITH IIF(EMPTY(qB01New.BSYST),My.Clients.Fips.YX_BSYST,qB01New.BSYST),qB01New.DATBEW WITH IIF(EMPTY(qB01New.DATBEW),{},qB01New.DATBEW),qB01New.DATEK WITH IIF(EMPTY(qB01New.DATEK),My.xDate,qB01New.DATEK),...,__Changed WITH .T.,__New WITH .T.
SELECT qB01New
=EXECSCRIPT([REPLACE ALL ]+m.lcExec)

*/ Wenn das ganze mit einem Datensatz-Objekt erfolgen soll...
lcExec = My.Systems.DataDict.GetDbfFieldList("B01","DEFAULT","#poRec")
*/ Der String lcExec sieht dann in etwa so aus:
*/ 	=ADDPROPERTY(poRec,"ARTNR",IIF(!PEMSTATUS(poRec,"ARTNR",5) OR EMPTY(poRec.ARTNR),IIF(My.Clients.Fips.YX_autoart,CAST(My.Functions.Internals.NextNr("ARTNR") as C(25)),SPACE(25)),poRec.ARTNR))
*/ 	=ADDPROPERTY(poRec,"AUSPFLICHT",IIF(!PEMSTATUS(poRec,"AUSPFLICHT",5) OR EMPTY(poRec.AUSPFLICHT),.F.,poRec.AUSPFLICHT))
*/ 	=ADDPROPERTY(poRec,"BBAS",IIF(!PEMSTATUS(poRec,"BBAS",5) OR EMPTY(poRec.BBAS),My.Clients.Fips.YX_BBAS,poRec.BBAS))
*/ 	=ADDPROPERTY(poRec,"BBZUG",IIF(!PEMSTATUS(poRec,"BBZUG",5) OR EMPTY(poRec.BBZUG),0,poRec.BBZUG))
*/ 	=ADDPROPERTY(poRec,"BMFEST",IIF(!PEMSTATUS(poRec,"BMFEST",5) OR EMPTY(poRec.BMFEST),0,poRec.BMFEST))
*/ 	=ADDPROPERTY(poRec,"BMMAX",IIF(!PEMSTATUS(poRec,"BMMAX",5) OR EMPTY(poRec.BMMAX),0,poRec.BMMAX))
PRIVATE poRec		&& poRec MUSS PRIVATE gesetzt sein, da EXECSCRIPT() eine lokale Variable NICHT KENNEN würde!
SELECT qB01New
SCAN
	SCATTER MEMO NAME poRec
	=EXECSCRIPT(m.lcExec)
	WITH poRec
		.__Changed = .T.
		.__New = .T.
	ENDWITH
	GATHER MEMO NAME poRec
ENDSCAN

*/ Wenn das ganze mit Memory-Variablen funktionieren soll
*/ Zuerst alle Tabellenspalten ermitteln und PRIVATE setzen:
lcExec = STRTRAN(My.Systems.DataDict.DbGetProperty("B01","","FIELDLIST"),";",",")
*/	ARTNR;BETRH;EIART;EILAGE;EKZUORD;IDC72;IDC98;IPY01LKZ;LSGUT;MGLOS;NOTRESU;RABATTJN;SHKENN;SKONTJN;STATUS;...
*/	ARTNR,BETRH,EIART,EILAGE,EKZUORD,IDC72,IDC98,IPY01LKZ,LSGUT,MGLOS,NOTRESU,RABATTJN,SHKENN,SKONTJN,STATUS,...
PRIVATE &lcExec,__Changed,__New
*/ Wieder den EXEC String ermitteln diesmal für Memory-Variablen incl. Prüfung...
*/ Der String sieht dann in etwa so aus:
*/ 	m.ARTNR = IIF(VARTYPE(m.ARTNR)<>"U" AND !EMPTY(m.ARTNR),m.ARTNR,IIF(My.Clients.Fips.YX_autoart,CAST(My.Functions.Internals.NextNr("ARTNR") as C(25)),SPACE(25)))
*/ 	m.AUSPFLICHT = IIF(VARTYPE(m.AUSPFLICHT)<>"U" AND !EMPTY(m.AUSPFLICHT),m.AUSPFLICHT,.F.)
*/ 	m.BBAS = IIF(VARTYPE(m.BBAS)<>"U" AND !EMPTY(m.BBAS),m.BBAS,My.Clients.Fips.YX_BBAS)
*/ 	m.BBZUG = IIF(VARTYPE(m.BBZUG)<>"U" AND !EMPTY(m.BBZUG),m.BBZUG,0)
*/ 	m.BMFEST = IIF(VARTYPE(m.BMFEST)<>"U" AND !EMPTY(m.BMFEST),m.BMFEST,0)
*/ 	m.BMMAX = IIF(VARTYPE(m.BMMAX)<>"U" AND !EMPTY(m.BMMAX),m.BMMAX,0)
lcExec = My.Systems.DataDict.GetDbfFieldList("B01","DEFAULT","#M")
SELECT qB01New
SCAN
	SCATTER MEMO MEMVAR
	=EXECSCRIPT(m.lcExec)
	STORE .T. TO __Changed,__New
	GATHER MEMO MEMVAR
ENDSCAN

*/ Das Gleiche für einen SQL-Update...
lcExec = My.Systems.DataDict.GetDbfFieldList("B01","DEFAULT","#qB01New:") + ",__Changed = .T.,__New = .T."
*/ Der String sieht dann in etwa so aus:
*/	qB01New.ARTNR = IIF(EMPTY(qB01New.ARTNR),IIF(My.Clients.Fips.YX_autoart,CAST(My.Functions.Internals.NextNr("ARTNR") as C(25)),SPACE(25)),qB01New.ARTNR),qB01New.AUSPFLICHT = IIF(EMPTY(qB01New.AUSPFLICHT),.F.,qB01New.AUSPFLICHT),qB01New.BBAS = IIF(EMPTY(qB01New.BBAS),My.Clients.Fips.YX_BBAS,qB01New.BBAS),qB01New.BBZUG = IIF(EMPTY(qB01New.BBZUG),0,qB01New.BBZUG),qB01New.BMFEST = IIF(EMPTY(qB01New.BMFEST),0,qB01New.BMFEST),qB01New.BMMAX = IIF(EMPTY(qB01New.BMMAX),0,qB01New.BMMAX),qB01New.BMMIN = IIF(EMPTY(qB01New.BMMIN),0,qB01New.BMMIN),qB01New.BMWI = IIF(EMPTY(qB01New.BMWI),0,qB01New.BMWI),qB01New.BSYST = IIF(EMPTY(qB01New.BSYST),My.Clients.Fips.YX_BSYST,qB01New.BSYST),qB01New.DATBEW = IIF(EMPTY(qB01New.DATBEW),{},qB01New.DATBEW),qB01New.DATEK = IIF(EMPTY(qB01New.DATEK),My.xDate,qB01New.DATEK),...
SELECT qB01New
=EXECSCRIPT([UPDATE qB01New SET ]+m.lcExec)

*/ Aufruf der Methode GetDbfFieldList():
*/	tcDbf		=> Name der Tabelle
*/	tcFieldInfo	=> "DEFAULT" (macht nur damit Sinn... Defaultwerte)
*/	tcObject	=> Name des Objektes bzw. des Alias
*/		oB01	=> Datensatz-Objekt mit dem Namen oB01
*/		qB01.	=> ALIAS, wenn mit REPLACE gearbeitet werden soll
*/		qB01:	=> ALIAS, wenn mit SQL Update gearbeitet werden soll
*/		M		=> Memory
*/ Wird dem Objektnamen ein # vorangestellt, so wird eine Feldinhaltsprüfung durchgeführt!
*/ Existiert das Tabellenfeld und ist NICHT leer, so wird der Wert beibehalten
*/ Ansonsten wird das Feld mit dem entsprechenden DefaultWert gesetzt!
*/ ACHTUNG! Wird mit einem Alias gearbeitet, so müssen alle Tabellenspalten vorhanden sein!


GetDbfFields() - Feldliste mehrerer Tabellen

Rückgabe:[String], gibt die Feldliste einer oder mehrerer angegebenen Tabellen zurück. Name und Pfad der Tabelle
Hilfeinformation
Rückgabe:[String], gibt die Feldliste einer oder mehrerer angegebenen Tabellen zurück. Name und Pfad der Tabelle

Aufrufinformation
String = My.Systems.DataDict.GetDbfFields(tcFilter as String)
String = My.Systems.DataDict.GetDbfFields(tcFilter)
Codeinformation


GetGridFields() -

Rückgabe:[String], Gibt eine Feldliste für eine Tabelle mit den Informationen aus (X61) zurück. Die Liste wird jedoch aus dem Di
Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.GetGridFields(tcDbf as String,tlReadWrite as Boolean,tcAlias as String)
String = My.Systems.DataDict.GetGridFields(tcDbf,tlReadWrite,tcAlias)
Codeinformation


GetProperty() - Abrufen einer Property in der Klasse

Rückgabe der benannten Property der Klasse. tnAsXML... kann sein: 0=Value, 1=C-Structure, 2=XML
Hilfeinformation
Ruft die Value einer Property in der Klasse ab.
Die Parameter: tcProperty as String
tcProperty: Name der Property in der Klasse

Aufrufinformation
Variant = My.Systems.DataDict.GetProperty(tcProperty as String,tnAsXMLStructure as Variant)
Variant = My.Systems.DataDict.GetProperty(tcProperty,tnAsXMLStructure)
Codeinformation
*/ Vorausgesetzt wird, dass My bekannt ist...
LOCAL lnError AS Number
lnError = My.Systems.DataDict.GetProperty('nError')

GetSqlFields() - Feldliste mehrerer Tabellen

Rückgabe:[String], Erzeugt eine Feldliste aus den angegebenen Tabellen, wobei gleiche Felder der verschiedenen Tabellen ausgeble
Hilfeinformation
Diese Methode kann mit verschiedenen Parametern aufgerufen werden. Wichtig ist, dass die Parameter korrekt übergeben werden. Die Methode liefert .NULL. zurück, wenn keine Definitionen vorhanden sind.

Aufrufinformation
String = My.Systems.DataDict.GetSqlFields(tcTableList as String,tlNewFields as Boolean,tcExceptFields as String,tcExceptFieldTypes as String,tlAsCreate as Boolean,tlWithNull as Boolean)
String = My.Systems.DataDict.GetSqlFields(tcTableList,tlNewFields,tcExceptFields,tcExceptFieldTypes,tlAsCreate,tlWithNull)
Codeinformation
*/ An einem Beispiel der Tabellen E11 und E12 soll diese Funktion verdeutlicht werden.
*/ Beim "addieren" mehrerer Tabellen werden gleiche Feldnamen, die in den angegebenen Tabellen vorkommen
*/ ausgefiltert. Dabei gilt: Die "Erste" Tabelle gewinnt. Am Beispiel der Tabellen E11 und E12:
lcFields = My.Systems.DataDict.GetSqlFields("E11;E12")
*/ Da beide Tabellen die Felder IDE10 und IDE12 enthalten würden in diesem Fall die genannten Felder aus der Tabelle
*/ E11 ermittelt.

*/ Alle Felder der Tabellen E11 und E12 in "einer" Feldliste:
lcFields = My.Systems.DataDict.GetSqlFields("E11;E12")
*/ lcFields hätte dann in etwa folgendes aussehen:
* E11.ABGEBUCHT,E11.AB_BEGINN,E11.AB_BOLD,E11.ALTERNATIV,... ,E12.VKGES,E12.VKH,E12.VKH1,E12.VKPE,E12.VKRECH,E12.VKSTAMM

*/ Der zweite Parameter der Funktion ist Logisch, sollte aber immer mit .F. übergeben werden.
lcFields = My.Systems.DataDict.GetSqlFields("E11;E12",.F.)

*/ Im dritten Parameter kann eine Feldliste angegeben werden, die AUSGESCHLOSSEN wird.
lcFields = My.Systems.DataDict.GetSqlFields("E11",.F.,"BEZ;LANG;IDC63;IDC67")
*/ In diesem Fall würden die angegebenen Felder in der Liste fehlen!

*/ Die obige Funktion kann auch gedreht werden d.h., dass nur die angegebenen Felder ENTHALTEN sind.
lcFields = My.Systems.DataDict.GetSqlFields("E11",.F.,"!IDE10;IDE11;BEZ;LANG;IDC63;IDC67")
*/ In diesem Fall währen lediglich die angegebenen Felder enthalten

*/ Zu den Feldnamen kann auch der Feldtyp angegeben werden, der AUSGESCHLOSSEN oder ENTHALTEN sein muss.
lcFields = My.Systems.DataDict.GetSqlFields("E11",.F.,"#","M")
*/ Würde alle Felder der E11 enthalten jedoch keine MEMOFELDER

*/ Die entsprechende Umkehrfunktion wäre:
lcFields = My.Systems.DataDict.GetSqlFields("E11",.F.,"*","!M")
*/ Man achte auf das WildCard "*" bei der Angabe der Feldnamen!
*/ Obiger Filter würde bedeuten: AUSSCHLUSS aller Felder jedoch KEINE Memofelder!

*/ Die Umkehrfunktion wird mit "!" an der ersten Stelle eingeleitet und gilt für ALLE weiteren Definitionen.
*/ WildCards sind * bzw. ?
lcFields = My.Systems.DataDict.GetSqlFields("E11;E12",.F.,"!IDE??;T1_*;T_*","M")
*/ Obige Anweisung würde liefern:
*/ Alle Felder die mit IDE anfangen und zwei weitere unbekannte Stellen haben. !E11.IDE11S wäre nicht enthalten!
*/ plus alle Felder, die mit T1_ anfangen
*/ plus alle Felder, die mit T_ anfangen
*/ aber keine Memofelder

*/ Feldtypen in VFP sind: C,V,M,W,G,N,Y,F,B,I,L,D,T
*/	C - Zeichen  (1-254)
*/	V - VarChar	 (1-254)
*/	M - Textfeld (MEMO)
*/	W - Blob	 (MEMO) - Binär
*/	G - General	 (MEMO) - OLE
*/	N,F - Numerisch (N,M)
*/	Y - Currency  B(8,4)
*/	B - Double	  B(8,N), !N-Anzahl der Nachkommastellen, die angezeigt werden! 8-Byte, 52Bit Mantisse und 12Bit Exponent
*/	I - Integer	  (4)
*/	L - Logisch	  (1)
*/	D - DATE	  (8)
*/	T - DateTime  (8)

GetValue() - Abrufen einer Variablen in der Klasse

Führt das genannte Script aus. Vorhandene Zeiger: poThis=oKlasse, poCom=oNameSpace
Hilfeinformation
Ruft die Value einer Variablen in der Klasse ab.
Die Parameter: tcVariable as String

Aufrufinformation
Variant = My.Systems.DataDict.GetValue(tcScript as String)
Variant = My.Systems.DataDict.GetValue(tcScript)
Codeinformation
*/ Vorausgesetzt wird, dass My bekannt ist...
LOCAL lcIdx02 AS String
lcIdx02 = My.Systems.DataDict.GetValue('My.cIdx02')
IF !ISNULL(m.lcIdx02)
	WAIT WINDOW m.lcIdx02
ELSE
	*/ My in der Klasse nicht bekannt!
ENDIF

IsTheSameVersion() - Versionsprüfung

Rückgabe: [Boolean], Gibt .T. oder .F. zurück, wenn die übergebene Version mit der Version der DD übereinstimmt oder nicht.
Hilfeinformation
Rückgabe: [Boolean], Gibt .T. oder .F. zurück, wenn die übergebene Version mit der Version der DD übereinstimmt oder nicht.

Aufrufinformation
Boolean = My.Systems.DataDict.IsTheSameVersion(tcVersion as String,tnWhat as Integer)
Boolean = My.Systems.DataDict.IsTheSameVersion(tcVersion,tnWhat)
Codeinformation


SetProperty() - Setzen einer Property in der Klasse

Setzt die Value an die benannte Property. tnAsObject kann sein: 0=Value, 1=C-Structure, 2=XML
Hilfeinformation
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

Aufrufinformation
Variant = My.Systems.DataDict.SetProperty(tcProperty as String,tvValue as Variant,tnAsObject as Integer)
Variant = My.Systems.DataDict.SetProperty(tcProperty,tvValue,tnAsObject)
Codeinformation
*/ Als Beispielcode für eine Klasse in einem COM+ Server
*/ Vorausgesetzt wird, dass My bekannt ist...
=My.Systems.DataDict.SetProperty('nError',0,0)
*/ oder auch...
=My.Systems.DataDict.SetProperty('nError',0)

Terminate() -

Den COM+ Server vor dem Release im Aufrufer beenden.
Hilfeinformation

Aufrufinformation
Variant = My.Systems.DataDict.Terminate()
Codeinformation


WriteSettings() - Schreiben div. Informationen in ein LOG-File

Mit dieser Methode kann eine Protokollierung div. Informationen in einem LOG File erfolgen.
Hilfeinformation
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!

Aufrufinformation
Variant = My.Systems.DataDict.WriteSettings(tcWann as String)
Variant = My.Systems.DataDict.WriteSettings(tcWann)
Codeinformation
*/ Als Beispielcode für eine Klasse in einem COM+ Server
*/ Vorausgesetzt wird, dass My bekannt ist...
=My.Systems.DataDict.WriteSettings('Heute um 15:00Uhr')
*/ oder auch...
=My.Systems.DataDict.WriteSettings(TTOC(DATETIME(),1))		&& Ausgabe: JJJJMMTThhmmss

getExpandTABddd() -

Rückgabe:[String], Diese Methode wurde aus PmsRenameMaster ausgegliedert! Damit das DDD nicht allzuoft mitgegeben werden muss
Hilfeinformation
Rückgabe:[String], Diese Methode wurde aus PmsRenameMaster ausgegliedert! Damit das DDD nicht allzuoft mitgegeben werden muss

Aufrufinformation
String = My.Systems.DataDict.getExpandTABddd(tcXXDbf as String)
String = My.Systems.DataDict.getExpandTABddd(tcXXDbf)
Codeinformation


Liste der Properties von DataDict


_Clsid - CLS-ID des COM+ Servers

CLS-ID des COM+ Servers. Wird im INIT() ermittelt.
Hilfeinformation
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.

Aufrufinformation
String = My.Systems.DataDict._Clsid
Codeinformation
LOCAL lcClsID AS String
lcClsID = My.Systems.DataDict._Clsid
WAIT WINDOW m.lcClsID

_ComServer - Pfad und Name des COM+ Servers

Dateiname und Pfad des gestarteten COM+ Servers
Hilfeinformation
Diese Property gibt es nur bei NameSpace Servern, dies sind Programmteile, die in einem geschützten Speicherbereich ablaufen.

Aufrufinformation
String = My.Systems.DataDict._ComServer
Codeinformation
LOCAL lcComServer AS String
lcComServer = My.Systems.DataDict._ComServer
WAIT WINDOW m.lcComServer

_Isreleased_ -


Hilfeinformation

Aufrufinformation
Boolean = My.Systems.DataDict._Isreleased_
Codeinformation


_Name - Name der COM+ Klasse

Name der COM+ Klasse. MUSS angegeben werden. Dieser _Name wird übertragen und ist von außen abfragbar. Diese Property ist ReadOn
Hilfeinformation
Dateiname der Applikation. Wenn unter Vfp gestartet wird! sind diese Werte NICHT gesetzt! Die Property _Name gibt den 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.

Aufrufinformation
String = My.Systems.DataDict._Name
Codeinformation
LOCAL lcComName AS String
lcComName = My.Systems.DataDict._Name
WAIT WINDOW m.lcComName

_Pcreleaselog_ -


Hilfeinformation

Aufrufinformation
Variant = My.Systems.DataDict._Pcreleaselog_
Codeinformation


_ServerName - Name der COM+ Server Datei

Name des Servers, wie bei der Initialisierung
Hilfeinformation
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.

Aufrufinformation
String = My.Systems.DataDict._ServerName
Codeinformation
LOCAL lcServerName AS String
lcServerName = My.Systems.DataDict._ServerName
WAIT WINDOW m.lcServerName

_StartMode - Startmodus des aufrufenden Servers

Startmode des externen Aufrufers. Derjenige, der den COM+ Server initialisiert. _StartMode='cMode,cNumber'
Hilfeinformation
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

Aufrufinformation
Number = My.Systems.DataDict._StartMode
Codeinformation
*/ Abfrage des Modus
WAIT WINDOW My.Systems.DataDict._StartMode

_Sys1016 - Verwendeter Speicher

Verwendeter Speicher in Byte
Hilfeinformation
Gibt den verwendeten Speicher des Namespace zurück.
Rückgabe ist Byte.

Aufrufinformation
Integer = My.Systems.DataDict._Sys1016
Codeinformation
LOCAL liBytes AS Integer
*/ Abfrage des Speichers
liBytes = My.Systems.DataDict._Sys1016
WAIT WINDOW LTRIM(STR(m.liBytes/1024))+" kB"

_Version - Version der Programmdatei

Versionsnummer des Servers im Format H.U.DD.V1V2.BBBB
Hilfeinformation
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

Aufrufinformation
String = My.Systems.DataDict._Version
Codeinformation
WAIT WINDOW My.Systems.DataDict._Version

_VfpVersion - VFP Version

Version von Visual FoxPro
Hilfeinformation
VFP Version der VFP-9 dll.

Aufrufinformation
String = My.Systems.DataDict._VfpVersion
Codeinformation
WAIT WINDOW My.Systems.DataDict._VfpVersion

cAppNameExe - Name der Applikation

Übertragen des Application.Servername
Hilfeinformation
Mit dieser Property kann der Name der Applikation abgerufen werden.

Aufrufinformation
String = My.Systems.DataDict.cAppNameExe
Codeinformation
*/ Als Beispielcode für eine Klasse in einem COM+ Server
*/ Vorausgesetzt wird, dass My bekannt ist...
LOCAL lcName AS String
lcName = My.Systems.DataDict.cAppNameExe

cClass -


Hilfeinformation

Aufrufinformation
String = My.Systems.DataDict.cClass
Codeinformation


cIdx02 - Mandanten ID

Mandanten ID aus PMS32. Weist dem Pfadserver PMS_08.PmsPath den Mandanten zu. Setzen aller Pfade.
Hilfeinformation
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
<>

Aufrufinformation
String = My.Systems.DataDict.cIdx02
Codeinformation
*/ Abfrage der Mandanten-ID
WAIT WINDOW My.Systems.DataDict.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...

cMethod - Methode des letzten Fehlers

Methode, in der der Fehler auftrat
Hilfeinformation
Methode in der der letzte Fehler auftrat.
Aufbau: [Fehlernummer] [Methode] [Zeilennummer] [Message]

Aufrufinformation
String = My.Systems.DataDict.cMethod
Codeinformation
*/ Abruf...
WAIT WINDOW My.Systems.DataDict.cMethod

cResetInfos - Reset C-Structure

Zurücksetzen von beliebigen Informationen in einem COM+ Server!
Hilfeinformation
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"

Aufrufinformation
String = My.Systems.DataDict.cResetInfos
Codeinformation
*/ Verschiedene RESET Befehle...
My.Systems.DataDict.cResetInfos = "REMOVE-MENUES"
My.Systems.DataDict.cResetInfos = "REMOVE-CS-FILES"
My.Systems.DataDict.cResetInfos = "REMOVE-CS-SCRIPTS"
My.Systems.DataDict.cResetInfos = "CHANGE-IDX09"
My.Systems.DataDict.cResetInfos = "USER_LOGIN"
*/ Je nach Klasse wird ein entsprechender RESET ausgeführt!

cTmpDir - Temporäres Verzeichnis

Wert:[String], Temp-Verzeichnis aus My Clients path
Hilfeinformation
Temporäres Verzeichnis für verschiedene Zwischenspeicherungen
Das Verzeichnis ist normalerweise unter: c:\benutzer\\appdata\local\temp\ zu finden...

Aufrufinformation
String = My.Systems.DataDict.cTmpDir
Codeinformation
*/ Same as: ADDBS(SYS(2023))
IF !DIRECTORY(My.Systems.DataDict.cTmpDir)
	*/ Benötigte Pfade sollten eigentlich da sein!
	=MESSAGEBOX("Pfad fehlt:" + My.Systems.DataDict.cTmpDir,64,"Temporäres Verzeichnis")
ENDIF

lTakeNewTransfer -

Die neue Umwandlung von C-Structure verwenden.
Hilfeinformation
Die neue Umwandlung von C-Structure verwenden.

Aufrufinformation
Boolean = My.Systems.DataDict.lTakeNewTransfer
Codeinformation


nError - Fehlernummer des letzten Fehlers

Fehlernummer: VFP+, PMS-, 0 Kein Fehler!
Hilfeinformation
Fehlernummer des letzten Fehlers.
Ist der Wert kleiner null, so handelt es sich um einen logischen Fehler.

Aufrufinformation
Number = My.Systems.DataDict.nError
Codeinformation
WAIT WINDOW My.Systems.DataDict.nError

nLine - Zeilennummer des letzten Fehlers

Zeilennummer des Fehlers. Kann auch 0 sein!
Hilfeinformation
Zeilennummer, in der der letzte Fehler auftrat

Aufrufinformation
Number = My.Systems.DataDict.nLine
Codeinformation
WAIT WINDOW My.Systems.DataDict.nLine

oClass -


Hilfeinformation

Aufrufinformation
Object = My.Systems.DataDict.oClass
Codeinformation


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