PMS32 Online- Hilfereferenz

Informationen zum Hotfix (48) des Servicepacks (3600) der Version (1.0.04), benötigt eventuell Datenbankupdate!


1.) Informationen aus Version: 1.0.04#3634
2.) Adressverwaltung - Tauschen des Vertreters in der Kundenmaske mit F3 ...
3.) Bestellwesen - Bestelldatensatz in D03 sperren zur Verwendung im Bestellvorschlag ...
4.) Stammdaten - Neues Notiz-Feld in den Einkaufsdaten (D03) ...
5.) System - Berechnete Felder im Datenraster ...
6.) System - Manuell konfigurieren mit den Registrierungsdateien PMS32.I.PRG.REG ...


Informationen aus Version: 1.0.04#3634

Adressverwaltung - Tauschen des Vertreters in der Kundenmaske mit F3 ...

Tauschen des Vertreters in der Kundenmaske mit F3. Diese Funktion wurde eingebaut.

An den Seitenanfang
Bestellwesen - Bestelldatensatz in D03 sperren zur Verwendung im Bestellvorschlag ...

Bestelldatensatz in D03 sperren zur Verwendung im Bestellvorschlag. In der Tabelle D03 Artikel-Einkaufsdaten wurde ein neues Feld D03.GESPERRT integriert. Damit kann ein Bestelldatensatz im Bestellvorschlag ausgeblent werden.

An den Seitenanfang
Stammdaten - Neues Notiz-Feld in den Einkaufsdaten (D03) ...

Neues Notiz-Feld in den Einkaufsdaten (D03). In der Tabelle D03 Artikel-Einkaufsdaten wurde ein neues Notizfeld (Langtext) integriert. Bei Gebrauch bitte das Feld in das Datenraster einfügen.

An den Seitenanfang
System - Berechnete Felder im Datenraster ...

Berechnete Felder im Datenraster. Es wurde eine weitere Funktion in PMS integriert, die selbst eine Berechnung von Information aus anderen Tabellen, die im entsprechenden Datenraster nicht zur Verfügung stehen erlaubt. Jetzt kann dafür eine Berechnung hinterlegt werden... Die Funktion kann nur über 'Spezialspalte einfügen' genutzt werden.
Zum ersten wurde die Maske der Eingabe geändert. Das Codefeld wurde in ein EDIT - Feld umgewandelt und erlaubt auch einen Zeilenumbruch, der dann wieder aus dem Code entfernt wird. Dies ebenso in der Maske X6201 - Spezialspalten editieren. Die Maske für die Eingabe einer Spezialspalte kann nun in der Größe geändert werden. Damit wurde die Codeeingabe verbessert.
Die Funktionen, die bei Spezialspalten genutzt werden können werden jetzt nochmals beschrieben.

Wenn ein Feld aus einer Tabelle ermittelt werden muss, die im Datenraster nicht zur Verfügung steht
Hier kann die Funktion GetMiscData("",,"") genommen werden. Ein Beispiel:
_k10match = GetMiscData("oK10",I20SQL.IDK10,"match")
Im Datenraster der Maske I2001 wird der Matchcode zum Projekt ermittelt.
'oK10' gibt die Property unter My.Bussines.Strain.Misc an, deren Daten abgerufen werden sollen: My.Bussines.Strain.Misc.oK10
'I20SQL.IDK10' gibt den Primärschlüssel der Projekttabelle (K10) an: My.Bussines.Strain.Misc.oK10[I20SQL.IDK10]
'match' gibt den Feldnamen der Projekttabelle an, der abgerufen werden soll: My.Bussines.Strain.Misc.oK10[I20SQL.IDK10].match
Mit der Funktion kann aber auch eine Funktion an My.Bussines.Strain.Misc abgerufen werden... dies klappt bei der nächsten neuen Funktion nicht:

Wenn ein Feld aus einer Tabelle ermittelt werden muss, die im Datenraster nicht zur Verfügung steht und man wie unter GetMiscData() über eine Objektabfrage einen Wert haben möchte...
Über die Funktion GetMiscValue("",,"") kann wie unter GetMiscData() ein Objekt und dessen Feld abgerufen werden... (Geht nur schneller)
Die entsprechende Funktion in My: My.GetMiscValue(...), Ein Beispiel:
_k10match = GetMiscValue("K10",I20SQL.IDK10,"match")
Eine Besonderheit ist die Rückgabe eines Datensatz-Objekts
oK10 = GetMiscValue("K10",I20SQL.IDK10)
Mit dieser Funktion können lediglich die Properties unter My.Bussines.Strain.Misc.oXXX abgerufen werden!

Wenn ein Feld aus einer Tabelle ermittelt werden muss, das im Datenraster nicht zur Verfügung steht und die Ermittlung über mehrere Tabellen geht
Hier kann die Funktion GetCodeData("",[,[,Parameter3[,Parameter4]]]) genommen werden.
Nehmen wir mal an, wir sind im Datenratser der Maske I2001 und wollen den Kunden zum Projekt ermitteln. Ein Beispiel:
_c63name1=GetCodeData("to.C63(to.K10('%P1%').idc63).name1",I20SQL.IDK10)
Nehmen wir den Code, der als String übergeben werden muss, mal auseinander:
Der Code: to.C63(to.K10('%P1%').idc63).name1 wird folgendermaßen umgewandelt:
_c63name1 = My.Bussines.Strain.Misc.oC63[My.Bussines.Strain.Misc.oK10['%P1'].idc63].name1
Der Wert %P1% wird durch den Wert aus I20SQL.IDK10 (Parameter-1) ersetzt:
_c63name1 = My.Bussines.Strain.Misc.oC63[My.Bussines.Strain.Misc.oK10[I20SQL.IDK10].idc63].name1
Die CodeSequence to. wird durch My.Bussines.Strain.Misc.o ... ersetzt. Das to. muss IMMER kleingeschrieben werden!

Wenn man ein Berechnetes Feld darstellen möchte, deren Tabelle aber im Datenraster nicht zur Verfügung steht
Hier kann die Funktion GetCalcData("",[,[,Parameter3[,Parameter4]]]) genommen werden.
Nehmen wir mal an, wir möchten der Einkaufspreis einer Bestellung im Datenraster der Maske I2001 anzeigen. Ein Beispiel:
_eg=iif(!EMPTY(i20sql.idd51),GetCalcData("o1=to.D51('%P1%%P2%');;o2=to.D40('%P1%');;return o1.menge_s*((o1.preis_f/o1.peek*(1-o1.rabatt/100)*(1-o1.rabatt1/100)+o1.edpreis)*(1-o2.ekrabatt/100))",i20sql.idd40,i20sql.idd51),0)
Wahnsinn, nehmen wir mal die Codezeile auseinander:
_eg = IIF(!EMPTY(I20SQL.IDD51),GetCalcData("
o1 = to.D51('%P1%%P2%') && Hier wird ein Datensatz der Tabelle D51 - Bestellpositionen geholt. %P1% wird durch I20SQL.IDD40 und %P2% wird durch I20SQL.IDD51 ersetzt
o2 = to.D40('%P1%') && Hier wird der Bestellkopfdatensatz (D40) zur Bestellposition geholt. %P1% wird durch I20SQL.IDD40 ersetzt
&& Jetzt die eigentliche Berechnung des EK's
return o1.menge_s * ( (o1.preis_f/o1.peek * (1-o1.rabatt/100) * (1-o1.rabatt1/100) + o1.edpreis ) * (1-o2.ekrabatt/100) )
Auch hier wird wieder to. durch My.Bussines.Strain.Misc.o ersetzt. Das to. muss IMMER kleingeschrieben werden!
Da die Codezeile aber in EINER Zeile der Definition gespeichert werden muss, werden Doppelt-Semikolon für die Definition eines Zeilenumbruchs genommen!
Das Semikolon MUSS/DARF nur bei der Funktion GetCalcData() verwendet werden!

Hinweis:
In der Definition der Codezeile dürfen KEINE eckigen Klammern [] benutzt werden!
Bei der Code-Definition bitte nur EINE der obigen Funktion verwenden, die Funktionen nicht mischen!

Der Abruf von Tabelleninformation an My.Bussines.Strain.Misc erfolgt über eine Property der Klasse, die als Array definiert ist.
In einem Programmcode würde ich deshalb die Schreibweise so wählen, das man die Property als Array erkennt:
cMatch = My.Bussines.Strain.Misc.oK10[I20SQL.IDK10].match
In der Definition einer Spezialspalte dürfen aber eckige Klammern nicht verwendet werden, weshalb auch runde Klammern genommen werden können:
cMatch = My.Bussines.Strain.Misc.oK10(I20SQL.IDK10).match
Geht auch, aber man erkennt eben das Array nicht...

Die Funktionen GetMiscData(), GetCodeData() und GetCalcData() sind schneller wie der Aufruf über My.Bussines.Strain.Misc..., da die Objektkette in My.oMisc gespeichert wird.

An den Seitenanfang
System - Manuell konfigurieren mit den Registrierungsdateien PMS32.I.PRG.REG ...

Manuell konfigurieren mit den Registrierungsdateien PMS32.I.PRG.CMD und PMS32.I.OCX.CMD. Falls PMS sich auf einer Station nicht registrieren lässt, kann mit Hilfe der Datei: PMS32.CR.TXT eine händische Registrierung vorgenommen werden. Was ist in diesem Fall zu tun?
1. Im Startverzeichnis von PMS muss die Textdatei: PMS32.CR.TXT erstellt werden. (Achtung wenn die Dateiendungen ausgeblendet werden!)
2. Danach sollten die Dateien vom Server mit CopyClient.cmd auf die lokale Station kopiert werden (Update...)
3. Danach die Datei PMS32.I.PRG.CMD 'als Administrator ausführen'
4. Danach PMS32 wieder starten

An den Seitenanfang

Dateiversion:1.0.04.3648.2784 - H.U.DD.V1.V2 - 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®