PMS32 Online- Hilfereferenz
Action - Führt Datensatz Operationen aus
Führt Datensatz Operationen aus
*/ Kurzbeispiel für den Zugriff auf diese Struktur */ Der Zugriff erfolgt über: My.Clients.Action */ 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 loAction AS My.Clients.Action */ Setzen der Variablen loAction = My.Clients.Action */ Jetzt erst die Schleifen durchlaufen... man beachte ALL, dass können ne Menge Sätze sein... REPLACE ALL Feldname1 WITH loAction.Function1(),Feldname2 WITH loAction.Function1(), ... */ Oder in einer Schleife... SCAN lvValue = loAction.Function(Alias.Spalte) + 25 lvValue = loAction.Function2(m.lvValue) REPLACE Feldname WITH m.lvValue,... ENDSCAN */ Es sind auch geschachtelte Aufrufe möglich...
Rückgabe:[Boolean], führt die Aktionen in einem Grid aus.
Boolean = My.Clients.Action.ActionChild(tnAction AS INTEGER,tnSubAction AS INTEGER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.ActionChild(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Boolean], Umrahmt das angegebene Feld in roter Farbe unter Angabe des ControlCodes _ControlSource
Boolean = My.Clients.Action.ActionError(tlError AS Boolean , tcField AS STRING, tcComment AS STRING,tlSError AS Boolean @) Boolean = My.Clients.Action.ActionError(tlError,tcField,tcComment,@tlSError)
Rückgabe:[Boolean], führt die Aktionen eines Feldes aus
Boolean = My.Clients.Action.ActionField(tnAction AS INTEGER,tnSubAction AS INTEGER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.ActionField(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Variant], Ermittelt alle Controls zum Master bzw, zur Maske. Keine GRID Controls.
Variant = My.Clients.Action.ActionGetControls(toForm AS Variant @, toControl AS Variant @) Variant = My.Clients.Action.ActionGetControls(@toForm,@toControl)
Rückgabe:[Boolean],Gehe zum genannten Datensatz.
Boolean = My.Clients.Action.ActionGo(tvWhat AS Variant ,tcFilter AS STRING ,tcAlias AS STRING,tnDataSession AS NUMBER) Boolean = My.Clients.Action.ActionGo(tvWhat,tcFilter,tcAlias,tnDataSession)
Rückgabe:[Boolean], Führt Aktionen zum Master-Datensatz aus.
Boolean = My.Clients.Action.ActionMaster(tnAction AS INTEGER,tnSubAction AS INTEGER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.ActionMaster(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Boolean], ermitteln der atkiven Row und Column des Grid's
Boolean = My.Clients.Action.ActionRecordNumber(toGrid AS OBJECT,tnRow AS INTEGER @,tnCol AS INTEGER @) Boolean = My.Clients.Action.ActionRecordNumber(toGrid,@tnRow,@tnCol)
Rückgabe:[Boolean], Führt das Script zur ActionFunktion aus. Rückgabe = .T. bzw. .F. Abfrage von tlReturn=.NULL. !
Boolean = My.Clients.Action.ActionScript(tcMenuFile AS STRING,tcScript AS STRING,tlScript AS Boolean @,tlReturn AS Boolean @ , tp1 as Variant @, tp2 as Variant @, tp3 as Variant @, tp4 as Variant @, tp5 as Variant @, tp6 as Variant @, tp7 as Variant @, tp8 as Variant @, tp9 as Variant @) Boolean = My.Clients.Action.ActionScript(tcMenuFile,tcScript,@tlScript,@tlReturn,@tp1,@tp2,@tp3,@tp4,@tp5,@tp6,@tp7,@tp8,@tp9)
Rückgabe:[Boolean], Zurücksetzen von l_Change und l_Add
Boolean = My.Clients.Action.ActionSz(tlAdd AS Boolean ,tlChange AS Boolean ,tlCancel AS Boolean) Boolean = My.Clients.Action.ActionSz(tlAdd,tlChange,tlCancel)
Rückgabe:[Boolean], Wird von ReadMenuTableAction aufgerufen. Steuert die angegebenen Aktionen in den Klassen der My Struktur
Boolean = My.Clients.Action.ActionTable(tnAction AS NUMBER,tnSubAction AS NUMBER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.ActionTable(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Boolean], Kann die Maske geschlossen werden?
Boolean = My.Clients.Action.CanEndForm(toFormSet AS OBJECT,tiWhatEnd AS INTEGER) Boolean = My.Clients.Action.CanEndForm(toFormSet,tiWhatEnd)
Rückgabe:[Boolean], Ändert den Wert von l_Change von .F. auf .T. und gibt die Information an das Formset weiter (Rote Raute)
Boolean = My.Clients.Action.ChangeLChange(toFormset AS OBJECT) Boolean = My.Clients.Action.ChangeLChange(toFormset)
Rückgabe:[Boolean], Löscht den letzten Tastaturcode
Boolean = My.Clients.Action.ClearLastKey()
Rückgabe:[Boolean], Setzt den Filter des Masters auf die Filtereinstellung im INIT des PRG's zurück
Boolean = My.Clients.Action.ClearMasterFilter(tlAdd AS Boolean ,tlChange AS Boolean) Boolean = My.Clients.Action.ClearMasterFilter(tlAdd,tlChange)
Ausführen eines VFP-Befehls mit EVALUATE().
Achtung! Eventuell müssen Variablen als PRIVATE deklariert werden!ENDTEXT
*
TEXT TO lcMessage NOSHOW TEXTMERGE
Ausführen eines VFP-Befehls mit EVALUATE().
Variant = My.Clients.Action.Evaluate(pcExpression AS STRING,pvDefault AS Variant,tvP1 AS Variant,tvP2 AS Variant,tvP3 AS Variant,tvP4 AS Variant, tvP5 AS Variant,tvP6 AS Variant,tvP7 AS Variant,tvP8 AS Variant,tvP9 AS Variant) Variant = My.Clients.Action.Evaluate(pcExpression,pvDefault,tvP1,tvP2,tvP3,tvP4,tvP5,tvP6,tvP7,tvP8,tvP9)
*/ Mit Evaluate kann eine Befehlszeile ausgeführt werden */ Eventuell benutzte Variablen sind PRIVATE zu deklarieren PRIVATE pnVar1 AS Number , pnVar2 AS Number LOCAL lnVar AS Number STORE 2 TO pnVar1,pnVar2 lnVar = My.Clients.Action.Evaluate([m.pnVar1+m.pnVar2]) WAIT WINDOW m.lnVar && Ergibt 4... ENDTEXT
Ausführen eines VFP-Scripts incl. der Prüfung, ob ein ALIAS besteht.
Variant = My.Clients.Action.ExecScript(_es_pcAlias AS STRING,_es_pcScript AS STRING,_es_tlBoolean AS Boolean, _es_tvP1 AS Variant,_es_tvP2 AS Variant,_es_tvP3 AS Variant,_es_tvP4 AS Variant,_es_tvP5 AS Variant,_es_tvP6 AS Variant, _es_tvP7 AS Variant,_es_tvP8 AS Variant,_es_tvP9 AS V) Variant = My.Clients.Action.ExecScript(_es_pcAlias,_es_pcScript,_es_tlBoolean,_es_tvP1,_es_tvP2,_es_tvP3,_es_tvP4,_es_tvP5,_es_tvP6,_es_tvP7,_es_tvP8,_es_tvP9)
*/ Mit EXECSCRIPT kann ein VFP-Script ausgeführt werden LOCAL lcScript AS String,lnVar1 AS Number,lnVar2 AS Number,lnVar AS Number TEXT TO lcScript NOSHOW TEXTMERGE LPARAMETERS tnVar1 AS Number @,tnVar2 AS Number @ tnVar1 = m.tnVar1 + 1 tnVar2 = m.tnVar2 - 2 RETURN m.tnVar1 + m.tnVar2 ENDTEXT */ Vorbelegen der Variablen (Parameter) STORE 2 TO lnVar1,lnVar2 lnVar = My.Clients.Action.ExecScript("",m.lcScript,0,@lnVar1,@lnVar2) */ und das Ergebnis... WAIT WINDOW m.lnVar WAIT WINDOW m.lnVar1 WAIT WINDOW m.lnVar2
Ausführen eines VFP-Scripts incl. PARAMETER (Collection)
Als Parameter wird eine Collection mit Informationen übergeben!
Variant = My.Clients.Action.ExecScriptP(tcScript AS STRING,toPara AS COLLECTION) Variant = My.Clients.Action.ExecScriptP(tcScript,toPara)
*/ Mit EXECSCRIPTP kann ein VFP-Script ausgeführt werden LOCAL lcScript AS String,lnVar AS Number,loColl AS Collection loColl = CREATEOBJECT("Collection") loColl.Add(2,"Var1") loColl.Add(2,"Var2") TEXT TO lcScript NOSHOW TEXTMERGE LPARAMETERS toColl AS Collection RETURN toColl.Item("Var1") + toColl.Item("Var2") ENDTEXT lnVar = My.Clients.Action.ExecScriptP(m.lcScript,m.loColl) */ und das Ergebnis... WAIT WINDOW m.lnVar
String = My.Clients.Action.FieldDblClickInfo(toField AS TextBox) String = My.Clients.Action.FieldDblClickInfo(toField)
Rückgabe:[Boolean], Ermittelt alle Controls für Action. oFormSet, oForm, oGrid und oField. Rückgabe ist .T., wenn oForm ein Objekt ist.
Boolean = My.Clients.Action.GetActionControls(toFormSet AS Variant @,toForm AS Variant @, toControl AS Variant @, toGrid AS Variant @) Boolean = My.Clients.Action.GetActionControls(@toFormSet,@toForm,@toControl,@toGrid)
Rückgabe:[String], Ermittelt den Filter des Masters bzw. der selectierten Tabelle
String = My.Clients.Action.GetActionFilter(tlBrowFor AS Boolean ,tcAlias AS STRING,tnDataSession AS NUMBER) String = My.Clients.Action.GetActionFilter(tlBrowFor,tcAlias,tnDataSession)
Rückgabe:[String}, ermittelt das Menü Script zur Aktion
Variant = My.Clients.Action.GetChildScriptProgram(tcModul AS STRING,tnAction AS INTEGER,tnSubAction AS INTEGER,tcGridName AS STRING) Variant = My.Clients.Action.GetChildScriptProgram(tcModul,tnAction,tnSubAction,tcGridName)
Rückgabe:[String], Ermittelt das Script zur gewünschten Master Action Funktion
String = My.Clients.Action.GetMasterScriptProgram(tcModul AS STRING,tnAction AS INTEGER,tnSubAction AS INTEGER) String = My.Clients.Action.GetMasterScriptProgram(tcModul,tnAction,tnSubAction)
Rückgabe:[Boolean], Holt den Originalrecord des Masters in ein Objekt
Boolean = My.Clients.Action.GetOriginalRecordBeforeSave()
Wandelt übergebene Parameter in eine Collection um.
Umkehrfunktion zu SetParameters.
Variant = My.Clients.Action.GetParameters(tvP1 AS Variant,tvP2 AS Variant,tvP3 AS Variant,tvP4 AS Variant,tvP5 AS Variant,tvP6 AS Variant,tvP7 AS Variant,tvP8 AS Variant,tvP9 AS Variant) Variant = My.Clients.Action.GetParameters(tvP1,tvP2,tvP3,tvP4,tvP5,tvP6,tvP7,tvP8,tvP9)
*/ Hier können mehrere Parameter in eine Collection übertragen werden LOCAL loCollection AS Collection , lni AS Integer , lcNames AS String loCollection = My.Clients.Action.GetParameters(1,DATE(),TIME()) WAIT WINDOW m.loCollection.Count && Anzahl der Werte (3) */ Die Namen der Parameter bestimmen lcNames = "" FOR m.lni = 1 TO m.loCollection.Count lcNames = m.lcNames + ";" + m.loCollection.GetKey(m.lni) NEXT m.lni WAIT WINDOW SUBSTR(m.lcNames,2)
Wandelt übergebene Parameter in eine Collection um.
Jedoch wird als 'erster' Parameter die Anzahl der Parameter mitgegeben.
Variant = My.Clients.Action.GetParametersCount(tnCnt AS Number,tvP1 AS Variant,tvP2 AS Variant,tvP3 AS Variant,tvP4 AS Variant,tvP5 AS Variant,tvP6 AS Variant,tvP7 AS Variant,tvP8 AS Variant,tvP9 AS Variant) Variant = My.Clients.Action.GetParametersCount(tnCnt,tvP1,tvP2,tvP3,tvP4,tvP5,tvP6,tvP7,tvP8,tvP9)
*/ Hier können mehrere Parameter in eine Collection übertragen werden */ Als Beispiel kann nur der Aufruf eines Scripts / einer Methode dienen LPARAMETERS tp1 AS Variant , tp2 AS Variant , tp3 AS Variant && Es könnten mehr sein! LOCAL loCollection AS Collection , lni AS Integer lni = PCOUNT() && Wieviele Parameter wurden übergeben? loCollection = My.Clients.Action.GetParametersCount(m.lni,m.tp1,m.tp2,m.tp3) WAIT WINDOW m.loCollection.Count && Anzahl der Werte (?)
Rückgabe:[String], Ermittelt das Script-Programm zu einem Control.
String = My.Clients.Action.GetScriptProgramObject(tcMethod AS STRING,toControl AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) String = My.Clients.Action.GetScriptProgramObject(tcMethod,toControl,toForm,toFormSet)
Rückgabe:[Boolean], Den Datensatz nochmals setzen bzw. ermitteln. Refresh des Datensatzes ausführen.
Boolean = My.Clients.Action.GoRecno(tnRecno AS INTEGER,tcAlias AS STRING,tcPruef AS STRING) Boolean = My.Clients.Action.GoRecno(tnRecno,tcAlias,tcPruef)
Rückgabe:[Boolean], Refresh einer Tabelle mittels RLOCK() durchführen...
Boolean = My.Clients.Action.HbuLock(tlNoUnlock AS Boolean,tnDataSession AS NUMBER) Boolean = My.Clients.Action.HbuLock(tlNoUnlock,tnDataSession)
Boolean = My.Clients.Action.HdeMenuAction(tnAction AS NUMBER,tnSubAction AS NUMBER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.HdeMenuAction(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Integer], Gibt den letzten TastenCode nKeyCode oder den letzten CtrlCode nShiftAltCtrl zurück
Integer = My.Clients.Action.LastPmsKey(tlShiftAltCtrl AS Boolean) Integer = My.Clients.Action.LastPmsKey(tlShiftAltCtrl)
Rückgabe:[Boolean], .T. - Das Grid hat keine Daten
Boolean = My.Clients.Action.LookForRecordsInGrid(tnGridRecno AS INTEGER) Boolean = My.Clients.Action.LookForRecordsInGrid(tnGridRecno)
Ersetzt die Funktion Modus() in MAINX. Umschlatung von l_insert. l_Insert=1 - einfügen, l_Insert=2 - anhängen
Variant = My.Clients.Action.MenuMode(tnMode AS INTEGER, tcName AS STRING) Variant = My.Clients.Action.MenuMode(tnMode,tcName)
Rückgabe:[Boolean], Gibt .T. zurück, wenn keine Datensätze ermittelt werden konnten. EOF() OR BOF() in einer Tabelle.
Boolean = My.Clients.Action.NoRecs(tvRecno AS Variant,tnDataSession AS NUMBER) Boolean = My.Clients.Action.NoRecs(tvRecno,tnDataSession)
Variant = My.Clients.Action.ReadFieldDblclick(poActiveInputField AS TEXTBOX,poActiveForm AS FORM) Variant = My.Clients.Action.ReadFieldDblclick(poActiveInputField,poActiveForm)
Rückgabe:[Boolean], Wird im GotFocus() eines Feldes ausgeführt
Boolean = My.Clients.Action.ReadFieldGotFocus(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldGotFocus(toField,toForm,toFormSet)
Rückgabe:[Boolean], Focus erneut auf das Feld setzen, bevor eine Action() ausgeführt wird. Routine für CommandButton's und OptionButton's
Boolean = My.Clients.Action.ReadFieldGrpResetFocus(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldGrpResetFocus(toField,toForm,toFormSet)
Ruft die HTML Hilfe auf. Rückgabe:[Boolean]
Boolean = My.Clients.Action.ReadFieldHelp(toField AS OBJECT,toForm AS OBJECT,tcWhat AS STRING) Boolean = My.Clients.Action.ReadFieldHelp(toField,toForm,tcWhat)
Rückgabe:[Boolean], Wird im INIT() eines Feldes ausgeführt.
Boolean = My.Clients.Action.ReadFieldInit(toField AS OBJECT) Boolean = My.Clients.Action.ReadFieldInit(toField)
Rückgabe:[Boolean], Wird von Field.InteractiveChange ausgeführt. Setzt l_Change und die 'Rote Raute'
Boolean = My.Clients.Action.ReadFieldInterActiveChange(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldInterActiveChange(toField,toForm,toFormSet)
Rückgabe:[Boolean], .F. = wenn eine Aktion ausgeführt wurde...
Boolean = My.Clients.Action.ReadFieldKeyPress(toObject AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT,tnKeyCode AS INTEGER,tnShiftAltCtrl AS INTEGER,tcFxField AS STRING) Boolean = My.Clients.Action.ReadFieldKeyPress(toObject,toForm,toFormSet,tnKeyCode,tnShiftAltCtrl,tcFxField)
Rückgabe:[Boolean], .F. = wenn eine Aktion auf den KeyPress ausgeführt wurde...
Boolean = My.Clients.Action.ReadFieldKeyPressGrid(toObject AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT,tnKeyCode AS INTEGER,tnShiftAltCtrl AS INTEGER,tcFxField AS STRING) Boolean = My.Clients.Action.ReadFieldKeyPressGrid(toObject,toForm,toFormSet,tnKeyCode,tnShiftAltCtrl,tcFxField)
Rückgabe:[Boolean], Wird im LostFocus eines Feldes ausgeführt
Boolean = My.Clients.Action.ReadFieldLostFocus(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldLostFocus(toField,toForm,toFormSet)
Rückgabe:[Boolean], Focus erneut auf das Feld setzen, bevor eine Action() ausgeführt wird.
Boolean = My.Clients.Action.ReadFieldResetFocus(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldResetFocus(toField,toForm,toFormSet)
Rückgabe:[Boolean], wird von RightClick() des Feldes getriggert. Aufruf der versch. ShortCut Menüs
Boolean = My.Clients.Action.ReadFieldRightClick(toObject AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldRightClick(toObject,toForm,toFormSet)
Rückgabe:[Boolean], Wird von THIS.ResetFocus() ausgeführt. Setzt den FOCUS wieder auf das Feld. Damit wird WHEN() nochmals ausgeführt! Reihenfolge: WHEN(), VALID(), GOTFOCUS()
Boolean = My.Clients.Action.ReadFieldValid(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldValid(toField,toForm,toFormSet)
Rückgabe:[Boolean], Modale Maske:Wird von THIS.ResetFocus() ausgeführt. Setzt den FOCUS wieder auf das Feld. Damit wird WHEN() nochmals ausgeführt! Reihenfolge: WHEN(), VALID(), GOTFOCUS()
Boolean = My.Clients.Action.ReadFieldValid_Modal(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldValid_Modal(toField,toForm,toFormSet)
Rückgabe:[Boolean], Wird von THIS.ResetFocus() ausgeführt. Setzt den FOCUS wieder auf das Feld. Damit wird WHEN() nochmals ausgeführt! Reihenfolge: WHEN(), VALID(), GOTFOCUS()
Boolean = My.Clients.Action.ReadFieldWhen(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT,tlModal AS Boolean) Boolean = My.Clients.Action.ReadFieldWhen(toField,toForm,toFormSet,tlModal)
Rückgabe:[Boolean], ModaleMaske: Wird von THIS.ResetFocus() ausgeführt. Setzt den FOCUS wieder auf das Feld. Damit wird WHEN() nochmals ausgeführt! Reihenfolge: WHEN(), VALID(), GOTFOCUS()
Boolean = My.Clients.Action.ReadFieldWhen_Modal(toField AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadFieldWhen_Modal(toField,toForm,toFormSet)
Rückgabe:[Boolean], Wird ausgeführt, wenn das Feld im Grid den Focus erhält.
Boolean = My.Clients.Action.ReadGridFieldGotFocus(toField AS OBJECT) Boolean = My.Clients.Action.ReadGridFieldGotFocus(toField)
Rückgabe:[Boolean], Wird ausgeführt, wenn das Feld im Grid den Focus verliert.
Boolean = My.Clients.Action.ReadGridFieldLostFocus(toField AS OBJECT) Boolean = My.Clients.Action.ReadGridFieldLostFocus(toField)
Rückgabe:[Boolean], Wird ausgeführt, wenn das Feld im Grid einen erneuten Focus erhält.
Boolean = My.Clients.Action.ReadGridFieldResetFocus(toField AS OBJECT) Boolean = My.Clients.Action.ReadGridFieldResetFocus(toField)
Rückgabe:[Boolean], Wird ausgeführt, wenn das Feld im Grid den Focus verlieren soll. Vor LostFocus()
Boolean = My.Clients.Action.ReadGridFieldValid(toField AS OBJECT) Boolean = My.Clients.Action.ReadGridFieldValid(toField)
Rückgabe:[Boolean], Wird ausgeführt, wenn das Feld im Grid den Focus erhalten soll. Vor GotFocus()
Boolean = My.Clients.Action.ReadGridFieldWhen(toField AS OBJECT) Boolean = My.Clients.Action.ReadGridFieldWhen(toField)
Rückgabe:[Boolean], Zusatzmethode zu ReadGridFieldValid()
Boolean = My.Clients.Action.ReadGridReadValid(toField AS OBJECT) Boolean = My.Clients.Action.ReadGridReadValid(toField)
Rückgabe:[Boolean], Führt die Aktion eines Menüs / einer Toolbar aus.
Boolean = My.Clients.Action.ReadMenuAction(tnAction AS NUMBER,tnSubAction AS NUMBER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.ReadMenuAction(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Boolean], Führt die Aktion für die Tabellen Aktionen aus. Siehe auch ActionTable()
Boolean = My.Clients.Action.ReadMenuTableAction(tnAction AS NUMBER,tnSubAction AS NUMBER,tvValue AS Variant,tlQuiet AS Boolean) Boolean = My.Clients.Action.ReadMenuTableAction(tnAction,tnSubAction,tvValue,tlQuiet)
Rückgabe:[Boolean], ShortCut für Page aufbauen
Boolean = My.Clients.Action.ReadPageRightClick(toPage AS OBJECT,toForm AS OBJECT,toFormSet AS OBJECT) Boolean = My.Clients.Action.ReadPageRightClick(toPage,toForm,toFormSet)
Rückgabe:[Boolean], Führt für das entsprechende Control einen SetFocus() aus.
Boolean = My.Clients.Action.ResetFocus(toControl AS OBJECT) Boolean = My.Clients.Action.ResetFocus(toControl)
Resets the property/method to the inherited value.
cProperty = My.Clients.Action.ResetToDefault(cProperty) cProperty = My.Clients.Action.ResetToDefault(cProperty)
Wandelt eine übergebene Collection in Parameter um.
Umkehrfunktion zu GetParameters.
Variant = My.Clients.Action.SetParameters(toPara AS Collection,tvP1 AS Variant @,tvP2 AS Variant @,tvP3 AS Variant @,tvP4 AS Variant @,tvP5 AS Variant @,tvP6 AS Variant @,tvP7 AS Variant @,tvP8 AS Variant @,tvP9 AS Variant @) Variant = My.Clients.Action.SetParameters(toPara,@tvP1,@tvP2,@tvP3,@tvP4,@tvP5,@tvP6,@tvP7,@tvP8,@tvP9)
*/ Umwandeln einer Collection in Parameter LOCAL loCollection AS Collection,lnVar1 AS Number,lnVar2 AS Number loCollection = CREATEOBJECT("Collection") =loCollection.Add(1,"tvp1") =loCollection.Add(2,"tvp2") =My.Clients.Action.SetParameters(m.loCollection,@lnVar1,@lnVar2) WAIT WINDOW m.lnVar1 WAIT WINDOW m.lnVar2
Rückgabe:[Boolean], es wird IMMER ein SHOW GETS ausgeführt ohne Prüfung
Boolean = My.Clients.Action.ShowGets()
Rückgabe:[Boolean], Führt ein SHOW GETS aus, wenn ein Formset besteht und NUR DANN
Boolean = My.Clients.Action.Show_Gets(toFormSet AS FORMSET) Boolean = My.Clients.Action.Show_Gets(toFormSet)
Rückgabe:[Boolean], Sperrt einen Datensatz oder die ganze Tabelle... und entsperrt diese wieder, wenn gewünscht
Boolean = My.Clients.Action.SystemLock(tcAlias AS STRING,tlEof AS Boolean,tnAnzahl AS INTEGER,tlUnlockBefore AS Boolean) Boolean = My.Clients.Action.SystemLock(tcAlias,tlEof,tnAnzahl,tlUnlockBefore)
Rückgabe:[String], Führt eine Filterprüfung durch. Rückgabe:[Boolean], ob der Filter korrekt ist.
String = My.Clients.Action.XType(tcExpression AS STRING) String = My.Clients.Action.XType(tcExpression)
Anzahl der Datensätze eines SQL Statements ermitteln.
Die Rückgabe ist Number oder .NULL.
Die Datenbankangaben:
CSYSDIR! => My.Clients.Path.cSysDir
CDBFDIR! => My.Clients.Path.cDbfDir
CFRXDIR! => My.Clients.Path.cFrxDir
CNETDIR! => My.Clients.Path.cNetDir
CTMPDIR! => My.Clients.Path.cTmpDir
werden unter VFP-Tabellen in den entsprechenden Pfad umgewandelt!
Bei der Verwendung eines SQL-Servers werden diese Informationen gegen den Datenbanknamen im SQL-Server ausgetauscht.
Variant = My.Clients.Action._SqlCount(tcSql AS String) Variant = My.Clients.Action._SqlCount(tcSql)
LOCAL lcSql AS String lcSql = [SELECT COUNT(*) FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Clients.Action._SqlCount(m.lcSql)>0 WAIT WINDOW "Es sind Daten vorhanden!" ENDIF */ Bemerkung: */ Bei der Angabe der Datenbank, hier CSYSDIR!, wird der Wert gegen den Pfad ausgetauscht!
Werden Datensätze im SQL-Statement ermittelt?
Die Rückgabe ist Boolean oder .NULL.
Die Datenbankangaben:
CSYSDIR! => My.Clients.Path.cSysDir
CDBFDIR! => My.Clients.Path.cDbfDir
CFRXDIR! => My.Clients.Path.cFrxDir
CNETDIR! => My.Clients.Path.cNetDir
CTMPDIR! => My.Clients.Path.cTmpDir
werden unter VFP-Tabellen in den entsprechenden Pfad umgewandelt!
Bei der Verwendung eines SQL-Servers werden diese Informationen gegen den Datenbanknamen im SQL-Server ausgetauscht.
Variant = My.Clients.Action._SqlExist(tcSql AS String) Variant = My.Clients.Action._SqlExist(tcSql)
LOCAL lcSql AS String lcSql = [SELECT ipy01 FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Clients.Action._SqlExist(m.lcSql) && Gibt Boolean zurück WAIT WINDOW "Es sind Daten vorhanden!" ENDIF */ Bemerkung: */ Bei der Angabe der Datenbank, hier CSYSDIR!, wird der Wert gegen den Pfad ausgetauscht!
Ausführen eines SQL-Statements und Rückgabe des angegebenen Cursors.
Die Rückgabe ist Boolean oder .NULL.
Die Datenbankangaben:
CSYSDIR! => My.Clients.Path.cSysDir
CDBFDIR! => My.Clients.Path.cDbfDir
CFRXDIR! => My.Clients.Path.cFrxDir
CNETDIR! => My.Clients.Path.cNetDir
CTMPDIR! => My.Clients.Path.cTmpDir
werden unter VFP-Tabellen in den entsprechenden Pfad umgewandelt!
Bei der Verwendung eines SQL-Servers werden diese Informationen gegen den Datenbanknamen im SQL-Server ausgetauscht.
Variant = My.Clients.Action._SqlRead(tcSql AS String,tcAlias AS String,tvTable AS Variant,tcIndex AS String) Variant = My.Clients.Action._SqlRead(tcSql,tcAlias,tvTable,tcIndex)
LOCAL lcSql AS String lcSql = [SELECT * FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Clients.Action._SqlRead(m.lcSql,"qY01",2) && Gibt Boolean zurück ACTIVATE _SCREEN BROWSE ENDIF */ Bemerkung: */ Bei der Angabe der Datenbank, hier CSYSDIR!, wird der Wert gegen den Pfad ausgetauscht! */ Die einzelnen Parameter: */ tcSql AS String,tcAlias AS String,tvTable AS Variant,tcIndex AS String */ Ein muss sind: tcSql AS String,tcAlias AS String */ tvTable kann angegeben werden mit: */ .F. => Cursor incl. __Changed [L] und __New [L], .T. - Tabelle incl. */ Bit-0 => 1 - Als Tabelle, 0 - Als Cursor */ Bit-1 => 1 - Ohne __Changed und __New, 0 - Mit... */ tcIndex kann angegeben werden, wenn Indizes auf dem Cursor / der Tabelle benötigt werden. */ "IndexKey1#IndexTag1;IndexKey2#IndexTag2;...." */ Wird kein IndexTag angegeben und der IndexKey NICHT aus einer Funktion ermittelt, so hat der IndexKey den Namen des IndexTag! */ Wird der IndexKey aus einer Funktion gebildet und es ist kein IndexTag angegeben, so erhält der IndexTag den Namen _Index<Nummer>
Ausführen eines SQL-Statements in ein Array und Rückgabe ob Daten ermittelt wurden.
Die Rückgabe ist Boolean oder .NULL.
Die Datenbankangaben:
CSYSDIR! => My.Clients.Path.cSysDir
CDBFDIR! => My.Clients.Path.cDbfDir
CFRXDIR! => My.Clients.Path.cFrxDir
CNETDIR! => My.Clients.Path.cNetDir
CTMPDIR! => My.Clients.Path.cTmpDir
werden unter VFP-Tabellen in den entsprechenden Pfad umgewandelt!
Bei der Verwendung eines SQL-Servers werden diese Informationen gegen den Datenbanknamen im SQL-Server ausgetauscht.
Variant = My.Clients.Action._SqlReadArray(tcSql AS String,toObject AS Object,taArray) Variant = My.Clients.Action._SqlReadArray(tcSql,toObject,taArray)
LOCAL lcSql AS String , laErg[1] , loObject AS Object lcSql = [SELECT * FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] */ Ausführen in ein lokales Array IF My.Clients.Action._SqlReadArray(m.lcSql,.NULL.,@laErg) && Es gibt Datensätze... */ FOR i = ... NEXT i ENDIF */ Ausführen in ein Objekt-Array loObject = CREATEOBJECT("EMPTY") =ADDPROPERTY(loObject,"aErg[1]") IF My.Clients.Action._SqlReadArray(m.lcSql,m.loObject,"aErg") && Es gibt Datensätze... */ FOR i = ... NEXT i ENDIF
Ausführen eines SQL-Statements in eine Collection und Rückgabe der Collection.
Die Rückgabe ist Collection oder .NULL.
Die Datenbankangaben:
CSYSDIR! => My.Clients.Path.cSysDir
CDBFDIR! => My.Clients.Path.cDbfDir
CFRXDIR! => My.Clients.Path.cFrxDir
CNETDIR! => My.Clients.Path.cNetDir
CTMPDIR! => My.Clients.Path.cTmpDir
werden unter VFP-Tabellen in den entsprechenden Pfad umgewandelt!
Bei der Verwendung eines SQL-Servers werden diese Informationen gegen den Datenbanknamen im SQL-Server ausgetauscht.
Variant = My.Clients.Action._SqlReadCollection(tcSql AS String,tcIndex AS String) Variant = My.Clients.Action._SqlReadCollection(tcSql,tcIndex)
LOCAL lcSql AS String , loColl AS Collection lcSql = [SELECT * FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] */ Normale Ausführung OHNE Indexangabe. */ Die Keys der Collection sind fortlaufend nummeriert! loColl= My.Clients.Action._SqlReadCollection(m.lcSql) WAIT WINDOW loColl.GetKey(1) && "0000001" */ Hat der SQL einen eindeutigen Key so kann dieser benutzt werden! loColl= My.Clients.Action._SqlReadCollection(m.lcSql,"ipy01") WAIT WINDOW loColl.GetKey(1) && "SU0"
Ausführen eines SQL-Statements und Rückgabe der Value des ERSTEN Feldes.
Die Rückgabe ist Variant oder .NULL.
Die Datenbankangaben:
CSYSDIR! => My.Clients.Path.cSysDir
CDBFDIR! => My.Clients.Path.cDbfDir
CFRXDIR! => My.Clients.Path.cFrxDir
CNETDIR! => My.Clients.Path.cNetDir
CTMPDIR! => My.Clients.Path.cTmpDir
werden unter VFP-Tabellen in den entsprechenden Pfad umgewandelt!
Bei der Verwendung eines SQL-Servers werden diese Informationen gegen den Datenbanknamen im SQL-Server ausgetauscht.
Variant = My.Clients.Action._SqlReadValue(tcSql AS String,tiValue AS Integer) Variant = My.Clients.Action._SqlReadValue(tcSql,tiValue)
LOCAL lcSql AS String , lvValue AS Variant */ Gibt den Inhalt der ERSTEN Spalte zurück lcSql = [SELECT bezei,kurz,master FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] lvValue = My.Clients.Action._SqlReadValue(m.lcSql) && y01.Bezei */ Gibt den Inhalt der ZWEITEN Spalte zurück lcSql = [SELECT bezei,kurz,master FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] lvValue = My.Clients.Action._SqlReadValue(m.lcSql,2) && y01.Kurz
UPDATE eines lokalen Cursors gegenüber der angegebenen Tabelle durchführen.
Die Rückgabe ist Boolean oder .NULL.
Der Cursor MUSS die Spalten __Changed und __New enthalten!
Außerdem MUSS die Zieltabelle die Spalte LastUpd enthalten!
Variant = My.Clients.Action._SqlUpdate(tcTable AS STRING,tcAlias AS STRING,tcIdName AS STRING,tcFilter AS String) Variant = My.Clients.Action._SqlUpdate(tcTable,tcAlias,tcIdName,tcFilter)
LOCAL lcSql AS String , tlUpdate AS Boolean lcSql = [SELECT * FROM CDBFDIR!B01 WHERE b01.artnr='SIE.3TH'] */ Lesen der Daten vom Backend IF My.Clients.Action._SqlRead(m.lcSql,"qB01",1) */ Ändern der Daten... SELECT qB01 REPLACE ALL match WITH "LEISTUNGSSCHALTER",__Changed WITH .T. tlUpdate = My.Clients.Action._SqlUpdate("B01",ALIAS(),"IDB01") IF NOT m.tlUpdate WAIT WINDOW My.Clients.Action.cLastError ENDIF ENDIF
UPDATE mehrerer lokaler Cursor gegenüber den angegebenen Tabellen durchführen.
Die Rückgabe ist Boolean oder .NULL.
Die Cursor MUSS die Spalten __Changed und __New enthalten!
Außerdem MUSS die Zieltabelle die Spalte LastUpd enthalten!
;Filter1 = My.Clients.Action._SqlUpdateAll(tcList AS STRING) ;Filter1 = My.Clients.Action._SqlUpdateAll(tcList)
LOCAL tlUpdate AS Boolean */ Lesen der Daten vom Backend IF My.Clients.Action._SqlRead([SELECT * FROM CDBFDIR!B01 WHERE b01.artnr='SIE.3TH'],"qB01",1) AND ; My.Clients.Action._SqlRead([SELECT d03.* FROM CDBFDIR!D03 INNER JOIN CDBFDIR!B01 ON d03.idd03=b01.idd03 WHERE b01.artnr='SIE.3TH'],"qD03",1) */ Ändern der Daten... UPDATE qB01 SET lang = qD03.bez, __Changed = .T. FROM qD03 WHERE qB01.idd03=qD03.idd03 UPDATE qD03 SET ekpdatum = My.xDate, __Changed = .T. tlUpdate = My.Clients.Action._SqlUpdateAll("B01;QB01;IDB01#D03;QD03;IDD03") IF NOT m.tlUpdate WAIT WINDOW My.Clients.Action.cLastError ENDIF ENDIF */ Hinweis: */ Der Update der einzel angegebenen Cursor wird mit einer Transaktion durchgeführt! */ Läuft einer der Updates auf einen Fehler wird die Änderung rückgängig gemacht! */ Der String ist folgendermaßen aufgebaut: */ "Tableinfo1#Tableinfo2#Tableinfo3#..." */ Tableinfo: */ Tabelle;Cursor;ID-Field[;Filter]
Rückgabe:[Boolean], Sortieren von Positionslisten mit Posnr
Boolean = My.Clients.Action._ac_sort(tcSort as String, tlDescending as Boolean) Boolean = My.Clients.Action._ac_sort(tcSort,tlDescending)
Umkehrfunktion zu lMenuHitEnable. Gibt .T. zurück, wenn das Menü gedimmt werden muss.
Variant = My.Clients.Action.lMenuHitDim(tcForm AS STRING) Variant = My.Clients.Action.lMenuHitDim(tcForm)
Gibt .T. zurück, wenn die gewählte Maske aufgerufen werden darf
Variant = My.Clients.Action.lMenuHitEnable(tcForm AS String) Variant = My.Clients.Action.lMenuHitEnable(tcForm)
Wird von iActionChildFncEnable gesetzt! Name des Grid's
String = My.Clients.Action.cGridName
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.Action.cIdx02
*/ Abfrage der Mandanten-ID WAIT WINDOW My.Clients.Action.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...
Mit dieser Property kann der letzte Fehler im Klartext abgerufen werden.
String = My.Clients.Action.cLastError
*/ Vorausgesetzt wird, dass My bekannt ist... LOCAL lcError AS String lcError = My.Clients.Action.cLastError
Methode in der der letzte Fehler auftrat.
Aufbau: [Fehlernummer] [Methode] [Zeilennummer] [Message]
String = My.Clients.Action.cMethod
*/ Abruf... WAIT WINDOW My.Clients.Action.cMethod
Rückgabe:[Integer], Umkehrfunktion zu iActionAllEnable. 1=.T.=gedimmt
Number = My.Clients.Action.iActionAllDim
Rückgabe:[Integer], Gibt alle momentan ausführbaren Informationen zurück. 1=.T.=Enabled
Number = My.Clients.Action.iActionAllEnable
Rückgabe:[Integer], Wie iActionAllDim, jedoch zeitgesteuert. Der Wert für iDim wird nur EINMAL innerhalb einer Sekunde ermittelt.
Number = My.Clients.Action.iActionAllTDim
Rückgabe:[Integer], Wie iActionAllEnable, jedoch zeitgesteuert. Abfragezeit zwischen zwei Änderungen ist eine Sekunde. Wird von den Menüs genutzt
Number = My.Clients.Action.iActionAllTEnable
Rückgabe:[Integer], Umkehrfunktion zu iActionChildAllEnable(). 1=.T.=gedimmt
Number = My.Clients.Action.iActionChildAllDim
Rückgabe:[Integer], Bitmuster aller Child Informationen. Summe aus iActionChildBlkEnable und iActionChildFncEnable
Number = My.Clients.Action.iActionChildAllEnable
Rückgabe:[Integer], Umkehrfunktion zu iActionChildBlkEnable(). 1=.T.=gedimmt
Number = My.Clients.Action.iActionChildBlkDim
Rückgabe:[Integer], Gibt das Bitmuster für die Rechte des Grid's zurück. 1=.T.=Enabled
Number = My.Clients.Action.iActionChildBlkEnable
Rückgabe:[Integer], Umkehrfunktion zu iActionChildFncEnable(). 1=.T.=gedimmt
Number = My.Clients.Action.iActionChildFncDim
Rückgabe:[Integer], Bitmuster der Grundfunktionen eines Grid's. Keine Blockfunktionen!
Number = My.Clients.Action.iActionChildFncEnable
Rückgabe:[Integer], Umkehrfunktion zu iActionFieldEnable. 1=.T.=gedimmt
Number = My.Clients.Action.iActionFieldDim
Rückgabe:[Integer], Abfrage, ob die Feldfunktionen aktiv sein dürfen. Wird von den SC-Menüs getriggert
Number = My.Clients.Action.iActionFieldEnable
Umkehrfunktion zu iActionFieldTypEnable
Number = My.Clients.Action.iActionFieldTypDim
Feldtyp und Funktion, die auf das Feld, siehe iActionFieldEnable angewendet werden kann. SubAction
Number = My.Clients.Action.iActionFieldTypEnable
Rückgabe:[Integer], Gleiche Funktion wie iActionMasterEnable jedoch wird der Kehrwert zurückgegeben. 1=.T.=gedimmt
Number = My.Clients.Action.iActionMasterDim
Rückgabe:[Integer], Gibt ein Bitmuster zurück, das alle ausführbaren Funktionen enthält. Die einzelne Funktion kann dann mit BITAND(iRights,nAction)>0 abgefragt werden
Number = My.Clients.Action.iActionMasterEnable
Wert:[Integer], Gibt die BitPattern für Menüs zurück. 1=.T.=gedimmt. Umkehrfunktion zu iTableAllEnable.
Number = My.Clients.Action.iTableAllDim
Rückgabe:[Integer], Abfrage der Spezialfunktionen die unter Datenaustausch liegen.
Number = My.Clients.Action.iTableAllEnable
Wert:[Integer], Zeitgesteuertes iTableAllDim. Berechnung erfolgt nur einmal pro Sekunde
Number = My.Clients.Action.iTableAllTDim
Wert:[Integer], Zeitgesteuertes iTableAllEnable. Berechnung erfolgt nur einmal pro Sekunde
Number = My.Clients.Action.iTableAllTEnable
Thermosanzeige bei der Ausführung
Boolean = My.Clients.Action.lShowThermos
My.Clients.Action.lShowThermos = .T.
Fehlernummer des letzten Fehlers.
Ist der Wert kleiner null, so handelt es sich um einen logischen Fehler.
Number = My.Clients.Action.nError
WAIT WINDOW My.Clients.Action.nError
Rückgabe:[Integer], Enthält den KeyCode des letzten Tastendrucks
Number = My.Clients.Action.nKeyCode
Zeilennummer, in der der letzte Fehler auftrat
Number = My.Clients.Action.nLine
WAIT WINDOW My.Clients.Action.nLine
Verarbeitete Datensätze
Number = My.Clients.Action.nRecords
WAIT WINDOW My.Clients.Action.nRecords
Ausführungszeit in Sekunden
Number = My.Clients.Action.nSeconds
WAIT WINDOW My.Clients.Action.nSeconds
Rückgabe:[Integer], Enthält den CtrlCode des letzten Tastendrucks
Number = My.Clients.Action.nShiftAltCtrl
Status der Ausführung
Number = My.Clients.Action.nStatus
WAIT WINDOW My.Clients.Action.nStatus
Merkt sich die Datenumgebung für eine Verarbeitung.
Beim Release der Variable wird die vorherige Datenumgebung wieder hergestellt.
Object = My.Clients.Action.oSelected
LOCAL loSelected AS My_Fu_Selected loSelected = My.Clients.Action.oSelected */ Danach können Tabellen und Cursor geöffnet werden... */ Mit dem Nachfolgenden Befehl wird der obige Zustand der Datenumgebung wieder hergestellt RELEASE loSelected
Instanziiert einen temporären Thermos
Object = My.Clients.Action.oThermos
LOCAL loThermos AS My_Sy_Thermos */ Instanziieren loThermos = My.Clients.Action.oThermos loThermos.AutoCenter = .T. loThermos.cFaktor(1,1/10,.F.,"Info-1...") loThermos.cFaktor(1,2/10,.F.,"Info-2...") */ ... */ Schliesst den Thermos RELEASE loThermos
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