PMS32 Online- Hilfereferenz
BarCodes - Umwandeln und Berechnen von Barcodes. EAN13, EAN8, CODE39 und CODE128
Umwandeln und Berechnen von Barcodes. EAN13, EAN8, CODE39, CODE128 und andere.
Wenn Sie diese Funktionen für die Ausgabe von Barcodes nutzen, müssen Sie die von PMS mitgelieferten Fonts installieren! Alle Druckfunktionen funktionieren nur mit den mitgelieferten Fonts!
Diverse BarCodes haben Einschränkungen, was die Ausgabe von "gültigen" Zeichen angeht. Um diese Zeichen herauszufinden sehen Sie sich bitte das Codebeispiel an.
*/ Codebeispiel zur Ermittlung der "gültigen" Zeichen bei verschiedenen BarCodes */ Dieses Beispiel kann nur als Programm ausgeführt werden! */ Sie können auch PMS32K.EXE (SQL-Manager) verwenden! LOCAL lcText AS String, lcFile AS String, loBarCode AS My_Fu_BarCodes */ Die Datei wird auf dem Desktop abgelegt lcFile = My.Systems.Computer.Desktop + "BarCode.txt" loBarCode = My.Functions.BarCodes */ Jetzt erzeugen wir den Text ... TEXT TO m.lcText NOSHOW TEXTMERGE PRETEXT 3 CODE-128: <<loBarCode.Code128(.NULL.)>> CODEABAR: <<loBarCode.CodeABar(.NULL.)>> CODE-25INT: <<loBarCode.Code25int(.NULL.)>> CODE-25IND: <<loBarCode.Code25ind(.NULL.)>> CODE-39: <<loBarCode.Code39(.NULL.)>> CODE-39EX: <<loBarCode.Code39EX(.NULL.)>> CODE-93: <<loBarCode.Code93(.NULL.)>> CODE-93EX: <<loBarCode.Code93EX(.NULL.)>> EANCODE: <<loBarCode.EanCode(.NULL.)>> ENDTEXT */ Jetzt den String ausgeben... =STRTOFILE(m.lcText,m.lcFile,0)
Rückgabe:[String], Gibt einen druckbaren String für Codabar Barcode zurück
String = My.Functions.BarCodes.Codabar(tcCodaBar AS String) String = My.Functions.BarCodes.Codabar(tcCodaBar)
*/ Beispielcode im Report: My.Functions.BarCodes.Codabar(b01.idb01)
Rückgabe:[String], Gibt eine Zeichenfolge für den Ausdruck von Code128 zurück. Incl. Prüfziffer, Randzone und Ruhezone
String = My.Functions.BarCodes.Code128(tcCode128 AS STRING) String = My.Functions.BarCodes.Code128(tcCode128)
*/ Beispielcode im Report: My.Functions.BarCodes.Code128(RTRIM(b01.artnr))
Unterroutine zu Code128
Variant = My.Functions.BarCodes.Code128PM1()
Rückgabe:[String], Gibt einen druckbaren String für Code 25 Industrial zurück
String = My.Functions.BarCodes.Code25Ind(tcCode25 AS String) String = My.Functions.BarCodes.Code25Ind(tcCode25)
*/ Beispielcode im Report: My.Functions.BarCodes.Code25Ind(b01.idb01)
Rückgabe:[String], Gibt einen druckbaren String für Code 25 Interleave zurück
String = My.Functions.BarCodes.Code25Int(tcCode25 AS STRING) String = My.Functions.BarCodes.Code25Int(tcCode25)
*/ Beispielcode im Report: My.Functions.BarCodes.Code25Ind(b01.idb01)
Berechnung der Prüfziffer für Code25Ind und Code25Int
Variant = My.Functions.BarCodes.Code25PZ(tcCode25 AS String) Variant = My.Functions.BarCodes.Code25PZ(tcCode25)
Rückgabe:[String], Gibt den String für den Ausdruck eines Code 39 Barcodes zurück.
String = My.Functions.BarCodes.Code39(tcCode39 AS String,tlWithPZ AS Boolean) String = My.Functions.BarCodes.Code39(tcCode39,tlWithPZ)
*/ Beispielcode im Report: My.Functions.BarCodes.Code39(RTRIM(b01.artnr))
Rückgabe:[String], Gibt einen druckbaren String für Code39 Extended zurück
String = My.Functions.BarCodes.Code39EX(tcCode39 AS STRING,tlWithPZ AS Boolean) String = My.Functions.BarCodes.Code39EX(tcCode39,tlWithPZ)
*/ Beispielcode im Report: My.Functions.BarCodes.Code39EX(RTRIM(b01.artnr))
Rückgabe:[String], Rückgabe für druckbare Code 39 Zeichen incl. Prüfziffer
String = My.Functions.BarCodes.Code39PZ(tcCode39 AS String,tcCodeBar AS String) String = My.Functions.BarCodes.Code39PZ(tcCode39,tcCodeBar)
Rückgabe:[String], Gibt einen druckbaren String für Code93 zurück
String = My.Functions.BarCodes.Code93(tcCode93 AS STRING,tlWithPZ AS Boolean) String = My.Functions.BarCodes.Code93(tcCode93,tlWithPZ)
*/ Beispielcode im Report: My.Functions.BarCodes.Code93(RTRIM(b01.artnr))
Rückgabe:[String], Gibt einen druckbaren String für Code93 Extended zurück
String = My.Functions.BarCodes.Code93EX(tcCode93 AS STRING,tlWithPZ AS Boolean) String = My.Functions.BarCodes.Code93EX(tcCode93,tlWithPZ)
Berechnung der Prüfziffer aus Code93
Variant = My.Functions.BarCodes.Code93PZ(tcCode93 AS String,tcCodeBar AS String) Variant = My.Functions.BarCodes.Code93PZ(tcCode93,tcCodeBar)
*/ Beispielcode im Report: My.Functions.BarCodes.Code93EX(RTRIM(b01.artnr))
Diese Funktion gibt einen QR-Code als Bild zurück. Das Bild wird im temporären Verzeichnis von PMS32C gespeichert und kann auch bei einer Reportausgabe genutzt werden.
Die Übergabeparameter sind folgende:
tcText AS String, hier kann ein langer Text übergeben werden.
tnSize AS Number, hier kann die Bildgröße angegeben werden. Der Wertebereich ist 2-12.
tnType AS Number, hier kann der Bildtyp angegeben werden. Der Wertebereich ist 0-2.
Zur Größe des Bildes (tnSize):
* 2 = 66 x 66 (in Pixel)
* 3 = 99 x 99
* 4 = 132 x 132
* 5 = 165 x 165
* 6 = 198 x 198
* 7 = 231 x 231
* 8 = 264 x 264
* 9 = 297 x 297
* 10 = 330 x 330
* 11 = 363 x 363
* 12 = 396 x 396
Der Bildtyp (tnType):
* 0 = BMP
* 1 = JPG
* 2 = PNG
Im Standard sind eingestellt:
tnSize = 2, 66x66 Pixel
tnType = 2, PNG Bild (Hinweis: Ein PNG Bild benötigt den kleinsten Speicherplatz!)
Variant = My.Functions.BarCodes.CodeQR(tcText AS STRING , tnSize AS INTEGER , tnType AS INTEGER) Variant = My.Functions.BarCodes.CodeQR(tcText,tnSize,tnType)
*/ Ein Beispiel, My wird vorausgesetzt... LOCAL lcText AS String , lcBildDatei AS String */ Der Text... TEXT TO lcText NOSHOW Michael Bergner Treppenstraße 53 66787 Wadgassen ENDTEXT */ Bildgröße 66x66, Bildtyp=PNG lcBildDatei = My.Functions.Barcodes.CodeQR(m.lcText) */ Bildgröße 99x99 lcBildDatei = My.Functions.Barcodes.CodeQR(m.lcText,3) */ Bildtyp=BMP, Bildgröße ist Voreinstellung (66x66) lcBildDatei = My.Functions.Barcodes.CodeQR(m.lcText,,0) In einem Report kann ein Image verwendet werden... Controlsource = 'Expression or variable name' = My.Functions.Barcodes.CodeQR(m.lcText) Bildanpassung = 'Scale contains, retain shape'
Diese Funktion gibt einen QR-Code als Bild zurück. Das Bild wird im temporären Verzeichnis von PMS32C gespeichert und kann auch bei einer Reportausgabe genutzt werden.
Die Übergabeparameter sind folgende:
tcText AS String, hier kann ein langer Text übergeben werden.
tnSize AS Number, hier kann die Bildgröße angegeben werden. Der Wertebereich ist 0-1000
tcType AS String, hier kann der Bildtyp angegeben werden. Der Wertebereich BMP,JPG,PNG
Zur Größe des Bildes (tnSize):
Die Bildgröße wird nach Vorgabe berechnet! Wenn Sie z.B. 100 übergeben so wird die eigentliche Bildgröße 99x99 Pixel sein!
Bei einer Größe von 300, wird das Bild 297x297 Pixel groß sein...
* <98 = 66 x 66 (in Pixel, kleinstes Bild)
* >98 = 99 x 99
* >131 = 132 x 132
* >164 = 165 x 165
* >197 = 198 x 198
* >230 = 231 x 231
* >265 = 264 x 264
* >296 = 297 x 297
* >329 = 330 x 330
* >362 = 363 x 363
* >395 = 396 x 396 (größtes Bild)
Der Bildtyp (tcType):
* "BMP"
* "JPG"
* "PNG"
Variant = My.Functions.BarCodes.CodeQRc(tcText AS STRING , tnSize AS NUMBER , tcType AS STRING) Variant = My.Functions.BarCodes.CodeQRc(tcText,tnSize,tcType)
*/ Ein Beispiel, My wird vorausgesetzt... LOCAL lcText AS String , lcBildDatei AS String */ Der Text... TEXT TO lcText NOSHOW Michael Bergner Treppenstraße 53 66787 Wadgassen ENDTEXT */ Bildgröße 66x66, Bildtyp=PNG lcBildDatei = My.Functions.Barcodes.CodeQRc(m.lcText) */ Bildgröße 99x99 lcBildDatei = My.Functions.Barcodes.CodeQRc(m.lcText,99) */ Bildtyp=BMP, Bildgröße ist Voreinstellung (66x66) lcBildDatei = My.Functions.Barcodes.CodeQRc(m.lcText,,"BMP")
Rückgabe:[String], Gibt den Zeichenstring für die Ausgabe eines EAN-13 bzw. EAN-8 Codes per Font zurück. Leerstring ist Fehler.
Ab Version 1.0.04#1300 wurden in verschiedenen Tabellen EAN Felder eingebaut, damit man die Werte mit den EAN Funktionen von PMS einfach Drucken und auch Scannen kann. Der Artikelstamm enthält schon seit der Version (16Bit) ein EAN Feld. Neu hinzugekommen sind EAN Felder in den Tabellen: E10,K10,J40,C02,V05 und V04 (BDE-Tabellen)
String = My.Functions.BarCodes.EanCode(tvEanCode AS Variant) String = My.Functions.BarCodes.EanCode(tvEanCode)
*/ Beispielcode im Report: My.Functions.BarCodes.EanCode(My.Functions.BarCodes.IdToEan(b01.idb01,b01.ipb01)) */ Oder wenn der EAN Code des Artikels vorliegt: My.Functions.BarCodes.EanCode(b01.ieb01) */ Oder aus den "neuen" Tabellen My.Functions.BarCodes.EanCode(k10.iek10) My.Functions.BarCodes.EanCode(e10.iee10) My.Functions.BarCodes.EanCode(j40.iej40) My.Functions.BarCodes.EanCode(c02.iec02) My.Functions.BarCodes.EanCode(v04.iev04) My.Functions.BarCodes.EanCode(v05.iev05)
Rückgabe:[String], Gibt einen EAN Code 7 oder 12 Zeichen incl. der Prüfziffer zurück. Es wird lediglich der Code erzeugt, nicht der Druckcode!. Rückgabe ist 8 oder 13 Zeichen
String = My.Functions.BarCodes.EanCodePP(tvEanCode AS Variant) String = My.Functions.BarCodes.EanCodePP(tvEanCode)
*/ Codebeispiel */ Wir erzeugen uns aus der Projekt-ID k10.idk10 eine 7 Stellige Nummer ohne Prüfziffer und verlängern diese dann auf EAN-8 LOCAL lcIdk10Short AS String, lcEan8 AS String USE k10 lcIdk10Short = RIGHT(k10.idk10,7) && Sofern die K10 zur Verfügung steht! lcEan8 = My.Functions.BarCodes.EanCodePP(m.lcIdk10Short) WAIT WINDOW "Beispiel EAN-8: IDK10: "+k10.idk10+" => Short: "+m.lcIdk10Short+" => EAN8: "+m.lcEan8 USE IN (SELECT("k10"))
Rückgabe:[String], Umkehrfunktion von IdToEan() Rückgabe ist die ID des EAN-13 Codes. IP kann als Referenz mitgegeben werden
String = My.Functions.BarCodes.EanToId(tcEanCode AS STRING,tcID AS STRING @,tcIP AS STRING @) String = My.Functions.BarCodes.EanToId(tcEanCode,@tcID,@tcIP)
*/ Codebeispiel aus IdToEan entnommen LOCAL lcEanK10 AS String,lcIdk10,lcIp */ Projektdatei öffnen und ans Ende gehen USE k10 GO BOTTOM */ Jetzt den EAN Code berechnen incl. Prüfziffer lcEanK10 = My.Functions.BarCodes.IdToEan(k10.idk10,"109") =My.Functions.BarCodes.EanToId(m.lcEanK10,@lcIdk10,@lcIp) WAIT WINDOW k10.idk10+" = "+m.lcIdk10 USE IN (SELECT("k10"))
Rückgabe:[String], Berechnet die Zeichenfolge für die Ausgabe eines EAN-13 Codes. Die Zeichenfolge muss mit dem korrekten EAN-Font ausgegeben werden!
String = My.Functions.BarCodes.Ean_13(tcEanCode AS STRING) String = My.Functions.BarCodes.Ean_13(tcEanCode)
Rückgabe:[String], Berechnet die Zeichenfolge für die Ausgabe eines EAN-8 Codes. Die Zeichenfolge muss mit dem korrekten EAN-Font ausgegeben werden!
String = My.Functions.BarCodes.Ean_8(tcEanCode AS STRING) String = My.Functions.BarCodes.Ean_8(tcEanCode)
Rückgabe:[String], Rückgabe der Prüfziffer eines EAN Codes. Wobei der übergebene Code entweder 7 oder 12 Zeichen lang ist
String = My.Functions.BarCodes.Ean_PZ(tcEanCode AS STRING) String = My.Functions.BarCodes.Ean_PZ(tcEanCode)
Rückgabe:[String], Gibt den EAN-Code (8/13) incl. der fehlenden Prüfziffer zurück. Rückgabe ist entweder EAN-8 oder EAN-13
String = My.Functions.BarCodes.Ean_XP(tcEanCode AS STRING) String = My.Functions.BarCodes.Ean_XP(tcEanCode)
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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.ExecScriptP(tcScript AS STRING,toPara AS COLLECTION) Variant = My.Functions.BarCodes.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.Functions.BarCodes.ExecScriptP(m.lcScript,m.loColl) */ und das Ergebnis... WAIT WINDOW m.lnVar
Wandelt übergebene Parameter in eine Collection um.
Umkehrfunktion zu SetParameters.
Variant = My.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.GetParametersCount(m.lni,m.tp1,m.tp2,m.tp3) WAIT WINDOW m.loCollection.Count && Anzahl der Werte (?)
Rückgabe:[String], Umwandlung von ID und IP in einen EAN-13 Code. Rückgabe ist EAN-13 incl. Prüfziffer von IP+ID
String = My.Functions.BarCodes.IdToEan(tcId AS String,tcIp AS String) String = My.Functions.BarCodes.IdToEan(tcId,tcIp)
*/ Codebeispiel: LOCAL lcEanK10 AS String */ Projektdatei öffnen und ans Ende gehen USE k10 GO BOTTOM */ Jetzt den EAN Code berechnen incl. Prüfziffer lcEanK10 = My.Functions.BarCodes.IdToEan(k10.idk10,"109") WAIT WINDOW "Beispiel EAN13: "+k10.idk10+" => EAN13: "+m.lcEanK10 USE IN (SELECT("k10"))
Wandelt eine übergebene Collection in Parameter um.
Umkehrfunktion zu GetParameters.
Variant = My.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes.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.Functions.BarCodes._SqlCount(tcSql AS String) Variant = My.Functions.BarCodes._SqlCount(tcSql)
LOCAL lcSql AS String lcSql = [SELECT COUNT(*) FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Functions.BarCodes._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.Functions.BarCodes._SqlExist(tcSql AS String) Variant = My.Functions.BarCodes._SqlExist(tcSql)
LOCAL lcSql AS String lcSql = [SELECT ipy01 FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Functions.BarCodes._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.Functions.BarCodes._SqlRead(tcSql AS String,tcAlias AS String,tvTable AS Variant,tcIndex AS String) Variant = My.Functions.BarCodes._SqlRead(tcSql,tcAlias,tvTable,tcIndex)
LOCAL lcSql AS String lcSql = [SELECT * FROM CSYSDIR!Y01 WHERE idc26="DE " AND ipy01="SU"] IF My.Functions.BarCodes._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.Functions.BarCodes._SqlReadArray(tcSql AS String,toObject AS Object,taArray) Variant = My.Functions.BarCodes._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.Functions.BarCodes._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.Functions.BarCodes._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.Functions.BarCodes._SqlReadCollection(tcSql AS String,tcIndex AS String) Variant = My.Functions.BarCodes._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.Functions.BarCodes._SqlReadCollection(m.lcSql) WAIT WINDOW loColl.GetKey(1) && "0000001" */ Hat der SQL einen eindeutigen Key so kann dieser benutzt werden! loColl= My.Functions.BarCodes._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.Functions.BarCodes._SqlReadValue(tcSql AS String,tiValue AS Integer) Variant = My.Functions.BarCodes._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.Functions.BarCodes._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.Functions.BarCodes._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.Functions.BarCodes._SqlUpdate(tcTable AS STRING,tcAlias AS STRING,tcIdName AS STRING,tcFilter AS String) Variant = My.Functions.BarCodes._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.Functions.BarCodes._SqlRead(m.lcSql,"qB01",1) */ Ändern der Daten... SELECT qB01 REPLACE ALL match WITH "LEISTUNGSSCHALTER",__Changed WITH .T. tlUpdate = My.Functions.BarCodes._SqlUpdate("B01",ALIAS(),"IDB01") IF NOT m.tlUpdate WAIT WINDOW My.Functions.BarCodes.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.Functions.BarCodes._SqlUpdateAll(tcList AS STRING) ;Filter1 = My.Functions.BarCodes._SqlUpdateAll(tcList)
LOCAL tlUpdate AS Boolean */ Lesen der Daten vom Backend IF My.Functions.BarCodes._SqlRead([SELECT * FROM CDBFDIR!B01 WHERE b01.artnr='SIE.3TH'],"qB01",1) AND ; My.Functions.BarCodes._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.Functions.BarCodes._SqlUpdateAll("B01;QB01;IDB01#D03;QD03;IDD03") IF NOT m.tlUpdate WAIT WINDOW My.Functions.BarCodes.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.Functions.BarCodes.cLastError
*/ Vorausgesetzt wird, dass My bekannt ist... LOCAL lcError AS String lcError = My.Functions.BarCodes.cLastError
Methode in der der letzte Fehler auftrat.
Aufbau: [Fehlernummer] [Methode] [Zeilennummer] [Message]
String = My.Functions.BarCodes.cMethod
*/ Abruf... WAIT WINDOW My.Functions.BarCodes.cMethod
Thermosanzeige bei der Ausführung
Boolean = My.Functions.BarCodes.lShowThermos
My.Functions.BarCodes.lShowThermos = .T.
Fehlernummer des letzten Fehlers.
Ist der Wert kleiner null, so handelt es sich um einen logischen Fehler.
Number = My.Functions.BarCodes.nError
WAIT WINDOW My.Functions.BarCodes.nError
Zeilennummer, in der der letzte Fehler auftrat
Number = My.Functions.BarCodes.nLine
WAIT WINDOW My.Functions.BarCodes.nLine
Verarbeitete Datensätze
Number = My.Functions.BarCodes.nRecords
WAIT WINDOW My.Functions.BarCodes.nRecords
Ausführungszeit in Sekunden
Number = My.Functions.BarCodes.nSeconds
WAIT WINDOW My.Functions.BarCodes.nSeconds
Status der Ausführung
Number = My.Functions.BarCodes.nStatus
WAIT WINDOW My.Functions.BarCodes.nStatus
Merkt sich die Datenumgebung für eine Verarbeitung.
Beim Release der Variable wird die vorherige Datenumgebung wieder hergestellt.
Object = My.Functions.BarCodes.oSelected
LOCAL loSelected AS My_Fu_Selected loSelected = My.Functions.BarCodes.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.Functions.BarCodes.oThermos
LOCAL loThermos AS My_Sy_Thermos */ Instanziieren loThermos = My.Functions.BarCodes.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