Benutzer-Werkzeuge

Webseiten-Werkzeuge

Action disabled: source

engine:procedures:pm_modifypersonpredefvals_ad

pm_ModifyPersonPredefVals_Ad

Prozedur zur Verwaltung von vordefinierten Eigenschaften bzw. von Übersetzungen von vordefinierten Eigenschaften zu einem Personen-Merkmal.

Allgemeiner Hinweis :

Existiert „ValueID“ und ist diese ID bereits einer Person zugewiesen, darf der Wert NICHT mehr geändert werden, wohl aber die „SortNo“ ! Die „PersonCharacteristicID“ kann grundsätzlich nachträglich NICHT mehr geändert werden !

Anmerkungen zu den Parametern „TableID“ und „TableKeyID“ :

1. Möchte man einen neuen (oder geänderten) Wert einem anderen Wert einer anderen Tabelle zuordnen, kann man durch die Angabe von „TableID“ und „TableKeyID“ quasi einen Datensatz in einer anderen Tabelle referenzieren. Beispielsweise kann man so ein Merkmal der Art „Bevorzugte Währung“ erstellen, dessen vordefinierte Werte „Währungs-Namen“ sind, und denen jeweils eine entsprechende „UnitID“ (die der Kategorie „Währung angehört) aus „Units“ zugeordnet ist.

2. Mögliche Werte für „TableID“ : siehe Rückgabespalte „TableID“ der Ergebnismenge des Aufrufs
„exec mi_GetTabsRefInOtherTabs_Ad UsedInPersonCharacValueRefs = 1“
„TableKeyID“ muß dann ein Wert aus der entsprechenden Tabelle sein, der in der durch „PrimaryKeyColumnName“ angegebenen Spalte dieser Tabelle vorkommt.

3. Einem vordefinierten Wert können MEHRERE (aber zu unterschiedlichen „TableID“s !) „Referenzen“ hinterlegt werden.

4.Übergibt man „NULL“ für „TableID“ und ÄNDERT man den vordefinierten Wert selbst (d.h. ist „Value“ ANDERS), werden sämtliche „Referenzen“ gelöscht, es sei denn „KeepReferencesIfValueChanges“ ist mit „1“ belegt (in diesem Fall werden die Parameter „TableID“ und „TableKeyID“ einfach ignoriert) !
Wird jedoch nur die „SortNo“ geändert (entspricht „Value“ also bereits dem alten Wert), und hat man „NULL“ für „TableID“ angegeben, wird eine evtl. vorhandene „Referenz“ jedoch NICHT gelöscht (genauer wird nichts weiter getan außer die „SortNo“ zu ändern) !

5. Um das Löschen aller oder bestimmter „Referenzen“ explizit zu steuern, ist der Parameter „DeleteTableKeyReference“ auf „1“ zu setzen. Ist „TableID“ dann „NULL“, werden ALLE evtl. vorhandenen „Referenzen“ gelöscht, ansonsten nur die angegebene (da es pro „TableID“ nur eine „Referenz“ geben kann, wir „TableKeyID“ ignoriert, d.h. es spielt keine Rolle, was dort angegeben ist).

6. Falls „LanguageID“ angegeben (also weder „0“ oder „NULL“) ist, werden die Parameter „TableID“, „TableKeyID“, „KeepReferencesIfValueChanges“ und „DeleteTableKeyReference“ ignoriert !

Anmerkung zum Parameter „PersonCharacteristicID“ :

Soll ein neuer Wert hinzugefügt oder ein bestehender Wert geändert werden, gibt es noch eine Besonderheit :

Handelt es sich bei „PersonCharacteristicID“ um ein Merkmal, das in „PersonTypeSettings“ zum Schlüssel „CountryCharacteristicID“ konfiguriert ist oder um die ID „15“, wird überprüft, ob es auch einen entsprechenden Eintrag in „Countries“ gibt ! „Entsprechend“ bedeutet in diesem Fall, daß es eine „CountryDescription“ geben muß, die mit „Value“ übereinstimmt.

Möchte man eine andere Schreibweise des Landes, gibt es aber noch die Möglichkeit, „TableID = 8“ anzugeben und in „TableKeyID“ die entsprechende „CountryID“ zu übergeben. Klar formuliert : Sobald „TableID“ angegeben ist, wird die Referenz über „TableKeyID“ überprüft, und nur, falls „TableID = NULL“ ist, wird gecheckt, ob es eine „CountryDescription“ gibt, die „Value“ entspricht.

HTTP-MethodPOST
HTTP-AuthOptional
Aliaspm_ModifyPersonPredefinedValues_Ad
Tags
Engine-Kategorieperson management
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
ValueIDNULL ID einer vordefinierten Eigenschaft. „NULL“ angeben, um eine neue Eigenschaft anzulegen. Ist das zugehörige Merkmal den Aufrufer lesend gesperrt (komplett oder eingeschränkt, s. pm_GetPChAccRestrForUsers_Ad), gibt es einen Fehler !
integer3.5.0
PersonCharacteristicID ID eines Personen-Merkmals. Dieser Parameter wird nur benötigt, wenn eine neue Eigenschaft angelegt werden soll (also „ValueID = NULL“ ist), da eine Eigenschaft immer genau zu einem Merkmal gehört. Besonderheit : ID „15“, siehe Beschreibung.
smallint3.5.0
Value Eine vordefinierte (falls „ValueID = NULL“, dann neue) Eigenschaft. Wurde eine (bestehende) „ValueID“ angegeben, kann die Eigenschaft selbst nur dann geändert werden, wenn sie noch keiner Person zugewiesen ist !
varchar(100)3.5.0
LanguageID0 ID einer Sprache. Wird hier weder „NULL“ noch „0“ übergeben, und wurde eine „ValueID“ angegeben, wird „Value“ als Übersetzung in dieser Sprache interpretiert (und entsprechend in „PersonCharacValuesTranslation“ gespeichert).
tinyint3.5.0
SortNo Bestimmt die Reihenfolge der Eigenschaft „Value“ innerhalb aller Eigenschaften zum Merkmal „PersonCharacteristicID“
integer3.5.0
DeleteValue0 Wird nur beachtet, wenn eine „ValueID“ angegeben wird ! Gibt man „1“ an, wird die Eigenschaft „ValueID“ gelöscht, bzw. (wenn „LanguageID“ weder „NULL“ noch „0“ ist) die Übersetzung in der durch „LanguageID“ angegebenen Sprache.
bit3.5.0
TableIDNULL ID einer Tabelle, in der ein Element (→ „TableKeyID“) definiert ist, auf das sich der Wert „ValueID“ bezieht. Mögliche Werte : siehe Beschreibung.
tinyint5.1.7
TableKeyIDNULL ID eines Objektes der durch „TableID“ angegebenen Tabelle, auf das sich der Wert „ValueID“ bezieht. Mögliche Werte : siehe Beschreibung.
integer5.1.7
KeepReferencesIfValueChanges0 Übergibt man „NULL“ für „TableID“ und ÄNDERT man den vordefinierten Wert selbst (d.h. ist „Value“ ANDERS), werden sämtliche „Referenzen“ gelöscht, es sei denn hier ist „1“ angegeben (dann werden die Parameter „TableID“ und „TableKeyID“ ignoriert) !
bit5.1.9
DeleteTableKeyReference0 Um das Löschen aller oder bestimmter „Referenzen“ explizit zu steuern, ist hier „1“ anzugeben. Ist „TableID“ dann „NULL“, werden ALLE evtl. vorhandenen „Referenzen“ gelöscht, ansonsten nur die „Referenz“ auf „TableID“.
bit5.1.9

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 4)
-697Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung bestehtnur direkt
-684Die Eigenschaft gehört zum Merkmal „Land“, aber es gibt keinen entsprechenden Eintrag in „Countries“nur direkt
-683Die Eigenschaft kann nicht mehr geändert werden, da sie bereits einer Person zugewiesen istnur direkt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-541Der Eintrag existiert bereitsnur direkt
-540Falsches Formatnur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-501Der Parameter „TableID“ und/oder der Parameter „TableKeyID“ ist ungültignur indirekt
-500Falsche Parameterdirekt und indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
6.5.2 2013-02-261. Beachtung der neuen Zugriffs-Beschränkungen für Merkmale [⇒ Doku-Anpassung]
2. Anpassungen an den aktuellen Quellcode-Standard [u.a. wg. UTF8-Unterstützung]
5.1.9 2007-01-261. Neue Parameter
2. Komplette Überarbeitung der Doku
3. Ab jetzt kann auch bei Änderung der „SortNo“ eine „Referenz“ gespeichert/gelöscht werden, und es kann auch NUR eine „Referenz“ gespeichert/gelöscht werden
5.1.7 2006-10-311. Neue Parameter „TableID“ und „TableKeyID“
2. Ausgabe an die Standard-Ausgabe [via „print“] im Fehler-Fall “-500„, die nähere Informationen über die Ursache enthält.
5.0.4 2005-09-26Umstellung auf den neuen „PersonTypeSettings“-Eintrag „CountryCharacteristicID“ bei der Überprüfung, ob [in bestimmten Fällen] ein entsprechender Eintrag in „Countries“ existiert
4.0.15 2004-07-301. Aufruf der Prozeduren „_mi_StartProcedure“, „_mi_FinishProcedure“ und „_mi_ChooseParamValueSeperator“
2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur
3. Konsequente Fehlerbehandlung
4.0.0 2003-04-03Kleine Unschönheit bzgl. der am 16.05.2002 eingeführten Überprüfung von „Value“ : „PersonCharacteristicID“ mußte angegeben sein, was vorher nicht der Fall war (jetzt aber wieder so ist)
3.5.19 2002-06-17
3.5.0 2000-11-23Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

Unformatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyPersonPredefVals_Ad?PersonCharacteristicID=<value>&Value=<value>&SortNo=<value>'

Mit xmllint 5) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyPersonPredefVals_Ad?PersonCharacteristicID=<value>&Value=<value>&SortNo=<value>' | xmllint --format -
dStore_php
use dStore_php\WebService;
 
$service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80);
 
$request = new WebService\Requests\Engine\Procedure\Request(
			new WebService\Requests\AccessData('default'),
	'pm_ModifyPersonPredefVals_Ad',
		array(
			'PersonCharacteristicID' => <value>,
			'Value' => '<value>',
			'SortNo' => <value>,
			// 'ValueID' => NULL,
			// 'LanguageID' => 0,
			// 'DeleteValue' => 0,
			// 'TableID' => NULL,
			// 'TableKeyID' => NULL,
			// 'KeepReferencesIfValueChanges' => 0,
			// 'DeleteTableKeyReference' => 0
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?>
<ListOfBatches>
	<Batch No="0">
		<Procedure Name="pm_ModifyPersonPredefVals_Ad">
			<Parameters>
				<Parameter Name="PersonCharacteristicID"><!-- smallint value --></Parameter>
				<Parameter Name="Value"><!-- varchar value --></Parameter>
				<Parameter Name="SortNo"><!-- integer value --></Parameter>
				<!-- <Parameter Name="ValueID">NULL</Parameter> -->
				<!-- <Parameter Name="LanguageID">0</Parameter> -->
				<!-- <Parameter Name="DeleteValue">0</Parameter> -->
				<!-- <Parameter Name="TableID">NULL</Parameter> -->
				<!-- <Parameter Name="TableKeyID">NULL</Parameter> -->
				<!-- <Parameter Name="KeepReferencesIfValueChanges">0</Parameter> -->
				<!-- <Parameter Name="DeleteTableKeyReference">0</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
4)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
5)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/pm_modifypersonpredefvals_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)