PMS32 Online- Hilfereferenz
fI01 - Funktionen der Lagerorte I01
Funktionen der Lagerorte I01
*/ Kurzbeispiel für den Zugriff auf diese Struktur */ Der Zugriff erfolgt über: My.Bussines.MaWi.fI01 */ 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 lofI01 AS My.Bussines.MaWi.fI01 */ Setzen der Variablen lofI01 = My.Bussines.MaWi.fI01 */ Jetzt erst die Schleifen durchlaufen... man beachte ALL, dass können ne Menge Sätze sein... REPLACE ALL Feldname1 WITH lofI01.Function1(),Feldname2 WITH lofI01.Function1(), ... */ Oder in einer Schleife... SCAN lvValue = lofI01.Function(Alias.Spalte) + 25 lvValue = lofI01.Function2(m.lvValue) REPLACE Feldname WITH m.lvValue,... ENDSCAN */ Es sind auch geschachtelte Aufrufe möglich...
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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.ExecScriptP(tcScript AS STRING,toPara AS COLLECTION) Variant = My.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.ExecScriptP(m.lcScript,m.loColl) */ und das Ergebnis... WAIT WINDOW m.lnVar
Gibt ein Array der Tabelle I15 zurück. Das Array enthält eine Spalte mit IDI15 Einträgen.
Die Rückgabe ist die Anzahl der Zeilen im Array.
Integer = My.Bussines.MaWi.fI01.GetArrayFromI15(taArray , tcFilter AS String, tcOrder AS String) Integer = My.Bussines.MaWi.fI01.GetArrayFromI15(taArray,tcFilter,tcOrder)
*/ My wird vorausgesetzt... LOCAL laArray[1], lnj AS Integer */ Alle Daten der I15... lnj = My.Bussines.MaWi.fI01.GetArrayFromI15(@laArray,"1=1","POSNR") IF m.lnj>0 */ Aussehen des Array's */ n => IDI15 ENDIF
Gibt ein Array mit den Daten aus I01 zurück. Alle Artikel-Lagerorte die einen verfügbaren (VOV) Bestand größer Null haben.
taArray ist das Array mit den Rückgabedaten:
4 - Spalten: IDC66+MATCH AS Anzeige, .T./.F. AS Mark, IDC66, Erweiterte Info
Rückgabe ist die Anzahl an Zeilen im Array.
Übergeben werden: @taArray , tcDbf (Muss IDB01 enthalten), '' , Filter auf C66.MATCH (LIKE), "Feldname-IDB01(s)"
Integer = My.Bussines.MaWi.fI01.GetArrayFromResBom(taArray , tcDbf AS String , tcIdk10 AS String , tcIcc66 AS String , tcFldB01 AS String) Integer = My.Bussines.MaWi.fI01.GetArrayFromResBom(taArray,tcDbf,tcIdk10,tcIcc66,tcFldB01)
*/ My wird vorausgesetzt! LOCAL lcDbf AS String , laArray[1] , lnj AS Integer */ Auflösen des Vorgangs... lcDbf = My.Clients.Bom.GetBomE1X("<ide10>") */ Rückgabe ist eine Tabelle incl. Pfad IF !EMPTY(m.lcDbf) AND FILE(m.lcDbf) */ Diese Tabelle wird der Bestandsprüfung mitgegeben */ Geprüft werden ALLE Lagerorte, die einen 'verfügbaren' Vorrat größer Null haben (I01.VOV>0) */ Gesperrte Lagerorte sind NICHT markiert laArray[n,2] = False lnj = My.Bussines.MaWi.fI01.GetArrayFromResBom(@laArray,m.lcDbf,"","%","IDB01S") IF m.lnj>0 */ Aussehen des Array's */ n,1 => Anzeige, IDC66-MATCH */ n,2 => Markiert?, .T./.F. => NOT C66.GESPERRT */ n,3 => IDC66 */ n,4 => ToolTipText */ n,5 => Order "1" oder "2", "1" - Stammlager aus den Firmenparametern, "2" - alle Anderen ENDIF */ Hinweis: */ Bei der Angabe von ICC66 muss mit den Wildcards "%" bzw. "_" gearbeitet werden (SQL-Server) */ Beispiel: "%LAGER%" => Alle Lagerorte, die das Wort LAGER enthalten ENDIF
Rückgabe:[Number], Füllt das Array aus den Angaben von My....Fips.yx_ResFC66. Rückgabe ist ein Array mit 4 Spalten. 1-Anzeige , 2-Marked , 3-IDC66 , 4-Tooltip
Number = My.Bussines.MaWi.fI01.GetArrayFromResFC66(taArray) Number = My.Bussines.MaWi.fI01.GetArrayFromResFC66(taArray)
*/ My wird vorausgesetzt... LOCAL laArray[1] , lnj AS Integer lnj = My.Bussines.MaWi.fI01.GetArrayFromResFC66(@laArray) IF m.lnj>0 */ Aussehen des Array's */ n,1 => Anzeige */ n,2 => Markiert? */ n,3 => IDC66 */ n,4 => ToolTipText ENDIF
Rückgabe der Reservierungsreihenfolge aus yx_ResFlgft.
Stammlager
Manuelle Materialanforderung
Automatische Materialanforderung
Bestellüberschuß
Bestellüberschuß Projekt
Das Array enthält 4 - Spalten:
Prompt, Marked, ID, Tooltip
Integer = My.Bussines.MaWi.fI01.GetArrayFromResFlg(taArray, tcResFolge AS String,tcResFlgft AS String) Integer = My.Bussines.MaWi.fI01.GetArrayFromResFlg(taArray,tcResFolge,tcResFlgft)
*/ My wird vorausgesetzt... LOCAL laArray[1], lnj AS Integer lnj = My.Bussines.MaWi.fI01.GetArrayFromResFlg(@laArray,"12345","11001") IF m.lnj>0 */ Aussehen des Array's */ n,1 => Anzeige */ n,2 => Markiert? */ n,3 => ID - 1,2,3,4,5 */ n,4 => ToolTipText ENDIF
Rückgabe:[Number], Gibt ein Array vom Typ RESFC66 zurück. 4 - Spalten. 1 - Anzeige , 2 - Marked , 3 - IDC66 , 4 - ToolTip. Übergeben wird ein String
Number = My.Bussines.MaWi.fI01.GetArrayFromResString(taArray , tcResFC66 AS STRING) Number = My.Bussines.MaWi.fI01.GetArrayFromResString(taArray,tcResFC66)
*/ My wird vorausgesetzt... LOCAL laArray[1], lnj AS Integer lnj = My.Bussines.MaWi.fI01.GetArrayFromResString(@laArray,My.Clients.Fips.yx_resfc66) IF m.lnj>0 */ Aussehen des Array's */ n,1 => Anzeige */ n,2 => Markiert? */ n,3 => ID - 1,2,3,4,5 */ n,4 => ToolTipText ENDIF
String = My.Bussines.MaWi.fI01.GetFlgStringFromArray(taArray) String = My.Bussines.MaWi.fI01.GetFlgStringFromArray(taArray)
*/ My wird vorausgesetzt... LOCAL laArray[1,4], lcRes AS String */ Das Array MUSS gefüllt sein! lcRes = My.Bussines.MaWi.fI01.GetFlgStringFromArray(@laArray) */ lcRes => "12345;11001"
Wandelt übergebene Parameter in eine Collection um.
Umkehrfunktion zu SetParameters.
Variant = My.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.GetParametersCount(m.lni,m.tp1,m.tp2,m.tp3) WAIT WINDOW m.loCollection.Count && Anzahl der Werte (?)
Rückgabe:[String], Gibt einen String vom Typ ResFC66 zurück unter Angabe eines Arrays
String = My.Bussines.MaWi.fI01.GetResStringFromArray(taArray) String = My.Bussines.MaWi.fI01.GetResStringFromArray(taArray)
*/ My wird vorausgesetzt... LOCAL laArray[1,4], lcRes AS String */ Das Array MUSS gefüllt sein! lcRes = My.Bussines.MaWi.fI01.GetFlgStringFromArray(@laArray) */ lcRes => "IDC66,1 CRLF IDC66,0 CRLF IDC66,0 CRLF ..."
Rückgabe:[String], Gibt einen durch Semikolon getrennten String mit IDC66 zurück. Unter Angabe auf was gefiltert werden soll ",1" | ",0" |alle
String = My.Bussines.MaWi.fI01.GetStringFromResFC66(tcFilter01A AS String,tcResString AS String) String = My.Bussines.MaWi.fI01.GetStringFromResFC66(tcFilter01A,tcResString)
Gibt die Vorgänge zurück, die den Bestand 'bestellt' größer Null haben
Variant = My.Bussines.MaWi.fI01.GetVob(tcIdb01 as String , tcIdk10 as String , tcIdc66 as String , tlSkip AS Boolean) Variant = My.Bussines.MaWi.fI01.GetVob(tcIdb01,tcIdk10,tcIdc66,tlSkip)
*/ My wird vorausgesetzt... LOCAL lcDbf AS String lcDbf = My.Bussines.MaWi.fI01.GetVob("<idb01>","<idk10>","<idc66>",.NULL.) && .NULL. = Ohne Index! IF !EMPTY(m.lcDbf) */ Tabelle mit den Bestellungen, die VOB>0 ausgelöst haben ENDIF
Gibt die Vorgänge zurück, die den Bestand 'gesperrt' größer Null haben
Variant = My.Bussines.MaWi.fI01.GetVog(tcIdb01 as String , tcIdk10 as String , tcIdc66 as String , tlSkip AS Boolean) Variant = My.Bussines.MaWi.fI01.GetVog(tcIdb01,tcIdk10,tcIdc66,tlSkip)
*/ My wird vorausgesetzt... LOCAL lcDbf AS String lcDbf = My.Bussines.MaWi.fI01.GetVog("<idb01>","<idk10>","<idc66>",.NULL.) && .NULL. = Ohne Index! IF !EMPTY(m.lcDbf) */ Tabelle mit den Wareneingängen bzw. Materialprüfungen, die VOG>0 ausgelöst haben ENDIF
Gibt die Vorgänge zurück, die den Bestand 'reserviert' größer Null haben
Variant = My.Bussines.MaWi.fI01.GetVor(tcIdb01 as String , tcIdk10 as String , tcIdc66 as String , tlSkip AS Boolean) Variant = My.Bussines.MaWi.fI01.GetVor(tcIdb01,tcIdk10,tcIdc66,tlSkip)
*/ My wird vorausgesetzt... LOCAL lcDbf AS String lcDbf = My.Bussines.MaWi.fI01.GetVor("<idb01>","<idk10>","<idc66>",.NULL.) && .NULL. = Ohne Index! IF !EMPTY(m.lcDbf) */ Tabelle mit den Lagerumbuchungen, Lagerabgängen und Barverkäufen, die VOR>0 ausgelöst haben ENDIF
Legt einen neuen Datensatz in der Sammeldisposition an.
Boolean = My.Bussines.MaWi.fI01.InsertI15(tcId AS STRING,tcIp AS STRING,tcArt AS STRING,tvPara AS Variant) Boolean = My.Bussines.MaWi.fI01.InsertI15(tcId,tcIp,tcArt,tvPara)
Die Informationen aus I15 löschen
Boolean = My.Bussines.MaWi.fI01.ResetI15(tcId AS STRING,tcIp AS STRING) Boolean = My.Bussines.MaWi.fI01.ResetI15(tcId,tcIp)
Set / Reset der Information Sammeldisposition in E10.HSTATUS2.
Boolean = My.Bussines.MaWi.fI01.SetE10_146(tcIde10 AS STRING,tlSet AS Boolean) Boolean = My.Bussines.MaWi.fI01.SetE10_146(tcIde10,tlSet)
Wandelt eine übergebene Collection in Parameter um.
Umkehrfunktion zu GetParameters.
Variant = My.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.SetParameters(m.loCollection,@lnVar1,@lnVar2) WAIT WINDOW m.lnVar1 WAIT WINDOW m.lnVar2
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.Bussines.MaWi.fI01._SqlCount(tcSql AS String) Variant = My.Bussines.MaWi.fI01._SqlCount(tcSql)
LOCAL lcSql AS String lcSql = [SELECT COUNT(*) FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlExist(tcSql AS String) Variant = My.Bussines.MaWi.fI01._SqlExist(tcSql)
LOCAL lcSql AS String lcSql = [SELECT ipy01 FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlRead(tcSql AS String,tcAlias AS String,tvTable AS Variant,tcIndex AS String) Variant = My.Bussines.MaWi.fI01._SqlRead(tcSql,tcAlias,tvTable,tcIndex)
LOCAL lcSql AS String lcSql = [SELECT * FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlReadArray(tcSql AS String,toObject AS Object,taArray) Variant = My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlReadCollection(tcSql AS String,tcIndex AS String) Variant = My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlReadCollection(m.lcSql) WAIT WINDOW loColl.GetKey(1) && "0000001" */ Hat der SQL einen eindeutigen Key so kann dieser benutzt werden! loColl= My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlReadValue(tcSql AS String,tiValue AS Integer) Variant = My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlUpdate(tcTable AS STRING,tcAlias AS STRING,tcIdName AS STRING,tcFilter AS String) Variant = My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlRead(m.lcSql,"qB01",1) */ Ändern der Daten... SELECT qB01 REPLACE ALL match WITH "LEISTUNGSSCHALTER",__Changed WITH .T. tlUpdate = My.Bussines.MaWi.fI01._SqlUpdate("B01",ALIAS(),"IDB01") IF NOT m.tlUpdate WAIT WINDOW My.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01._SqlUpdateAll(tcList AS STRING) ;Filter1 = My.Bussines.MaWi.fI01._SqlUpdateAll(tcList)
LOCAL tlUpdate AS Boolean */ Lesen der Daten vom Backend IF My.Bussines.MaWi.fI01._SqlRead([SELECT * FROM CDBFDIR!B01 WHERE b01.artnr='SIE.3TH'],"qB01",1) AND ; My.Bussines.MaWi.fI01._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.Bussines.MaWi.fI01._SqlUpdateAll("B01;QB01;IDB01#D03;QD03;IDD03") IF NOT m.tlUpdate WAIT WINDOW My.Bussines.MaWi.fI01.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]
Mit dieser Property kann der letzte Fehler im Klartext abgerufen werden.
String = My.Bussines.MaWi.fI01.cLastError
*/ Vorausgesetzt wird, dass My bekannt ist... LOCAL lcError AS String lcError = My.Bussines.MaWi.fI01.cLastError
Methode in der der letzte Fehler auftrat.
Aufbau: [Fehlernummer] [Methode] [Zeilennummer] [Message]
String = My.Bussines.MaWi.fI01.cMethod
*/ Abruf... WAIT WINDOW My.Bussines.MaWi.fI01.cMethod
Thermosanzeige bei der Ausführung
Boolean = My.Bussines.MaWi.fI01.lShowThermos
My.Bussines.MaWi.fI01.lShowThermos = .T.
Fehlernummer des letzten Fehlers.
Ist der Wert kleiner null, so handelt es sich um einen logischen Fehler.
Number = My.Bussines.MaWi.fI01.nError
WAIT WINDOW My.Bussines.MaWi.fI01.nError
Zeilennummer, in der der letzte Fehler auftrat
Number = My.Bussines.MaWi.fI01.nLine
WAIT WINDOW My.Bussines.MaWi.fI01.nLine
Verarbeitete Datensätze
Number = My.Bussines.MaWi.fI01.nRecords
WAIT WINDOW My.Bussines.MaWi.fI01.nRecords
Ausführungszeit in Sekunden
Number = My.Bussines.MaWi.fI01.nSeconds
WAIT WINDOW My.Bussines.MaWi.fI01.nSeconds
Status der Ausführung
Number = My.Bussines.MaWi.fI01.nStatus
WAIT WINDOW My.Bussines.MaWi.fI01.nStatus
Merkt sich die Datenumgebung für eine Verarbeitung.
Beim Release der Variable wird die vorherige Datenumgebung wieder hergestellt.
Object = My.Bussines.MaWi.fI01.oSelected
LOCAL loSelected AS My_Fu_Selected loSelected = My.Bussines.MaWi.fI01.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.Bussines.MaWi.fI01.oThermos
LOCAL loThermos AS My_Sy_Thermos */ Instanziieren loThermos = My.Bussines.MaWi.fI01.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