Aufgabenstellung
Die Aufgabenstellung soll anhand eines konkreten Beispiels erläutert werden, das sich auf den Demo-Mandanten von WINcontact bezieht. Die Aufgabe besteht darin, Adressen aus einem Mandanten A (hier DEMOMANDANT) in einen Mandanten B (hier Z-ABOS) zu importieren, wobei die zu importierenden Adressen dahingehend eingeschränkt sind, dass sie zuvor im Projekt ABO VERKAUF mit dem Kontaktstatus ABOVERKAUF erledigt wurden. Oder anders ausgedrückt, es sollen nur die Adressen in den Mandanten Z-ABOS übernommen werden, für die im Projekt ABO VERKAUF ein Zeitschriftenabo verkauft wurde.
Hinweis: Die Screenshots stammen von einer älteren WINcontact-Version.
Lösung
Hinweis: Die Screenshots stammen von einer älteren WINcontact-Version.
Lösung
Die Lösung erfolgt mittels eines speziell angepassten Importskriptes. Die Schwierigkeit besteht darin, dass beim Import der Primärschlüssel der ADRESSEN-Tabelle nicht erhalten bleibt. Diese Information ist aber notwendig, um die Kommunikationskanäle und die Daten der Zusatztabelle richtig importieren zu können. Es bietet sich aber an, vor dem Import die originalen ADRESSENID-Einträge in einem Feld, welches mit-importiert wird (wir wählen ASTATUS1), zwischenzuspeichern. Damit kann nach dem Import der ADRESSEN-Tabelle eine eindeutige Beziehung zwischen den Adressen im Mandanten B zu den Einträgen in der Kommunikations- und Zusatztabelle des Mandanten A hergestellt werden.
Arbeitsschritte
1. Neuen Mandanten Z-ABOS anlegen
2. Im neuen Mandanten Z-ABOS die Zusatztabelle ZUSATZ analog zum Demo-Mandanten anlegen
3. Neues Projekt VERKAUF im Mandanten Z-ABOS anlegen
4. Neuen Importskript entwickeln
Dazu muss als Erstes eine Verbindung zum SQL-Server und dort zum Mandanten TMMandant1 (Demomandant) und dessen Tabelle ADRESSEN hergestellt werden. Das gelingt mit dem Datenbank-Verbindungswizard. Am Ende ergibt sich ein SQL-Skript der Form

Dieser Skript liefert alle Adressen aus dem Demomandanten zurück. Es sollen aber nur die Adressen importiert werden, die im Projekt VERKAUF (TMProjekt1_2) mit dem Kontaktstatus "ABOVERKAUF" erledigt sind. Deshalb muss diese Abfrage entsprechend modifiziert werden:

Anschließend kann der Datenimport-Wizard bis zur letzten Seite durchlaufen werden (Adressentabelle komplett übernehmen). Die restlichen Arbeiten werden in den "Ereignissen" ausgeführt.
ADRESSENID im Feld ASTATUS1 zwischenspeichern
Das muss noch vor dem eigentlichen Importvorgang geschehen. Dafür bietet sich das Ereignis "Vor Import ausführen" an. Ihm wird ein Eventskript mit folgender SQL-Anweisung zugewiesen:

Nach Abarbeitung dieses Skripts steht im Feld ASTATUS1 die originale ADRESSENID und kann mit dem Feld ASTATUS1 in den Mandanten Z_ABO importiert werden.
Kommunikationskanäle und Zusatztabelle übernehmen
Dazu werden drei SQL-Skripte, die im Ereignis "Nach Import ausführen" abgearbeitet werden, benötigt. Mit Erfolgs- bzw. Fehlermeldungen sieht der Eventskript folgendermaßen aus:

1. Kommunikationskanäle übernehmen
INSERT INTO {MANDANT}..KOMMUNIKATION
(ADRESSEN_ID, APART_ID, BEZEICHNER, KOMMART, ZUGANG, ORDERID)
(ADRESSEN_ID, APART_ID, BEZEICHNER, KOMMART, ZUGANG, ORDERID)
SELECT B.ADRESSENID, APART_ID, BEZEICHNER, KOMMART, ZUGANG, ORDERID
FROM TMMandant1..KOMMUNIKATION A, {MANDANT}..ADRESSEN B
WHERE A.ADRESSEN_ID=B.ASTATUS1
FROM TMMandant1..KOMMUNIKATION A, {MANDANT}..ADRESSEN B
WHERE A.ADRESSEN_ID=B.ASTATUS1
Man beachte, dass der Join über den im Feld ASTATUS1 zwischengespeicherten "alten" ADRESSENID-Wert erfolgt.
2. Inhalt der importierten Tabelle ZUSATZ löschen (abschneiden)
TRUNCATE TABLE ZUSATZ
3. Inhalte der Tabelle ZUSATZ importieren
INSERT INTO {MANDANT}..ZUSATZ
(ADRESSEN_ID, Gruendungsjahr, Jahresumsatz, Mitarbeiteranzahl, Rechtsform)
SELECT B.ADRESSENID, Gruendungsjahr, Jahresumsatz, Mitarbeiteranzahl, Rechtsform FROM TMMandant1..ZUSATZ A, {MANDANT}..ADRESSEN B
WHERE A.ADRESSEN_ID=B.ASTATUS1
WHERE A.ADRESSEN_ID=B.ASTATUS1
Man beachte, dass auch hier der Join über den im Feld ASTATUS1 zwischengespeicherten "alten" ADRESSENID-Wert erfolgt.
Damit ist die Aufgabenstellung erfüllt und die importierten Adressen können dem Verkaufs-Projekt im neuen Mandanten zugewiesen werden.
Keine Kommentare:
Kommentar veröffentlichen