Daten zwischen Mandanten abgleichen

17. März 2010 16:16

Wir haben 2 verschiedene Mandanten. Der Artikelstamm ist ähnlich, soll heißen es gibt Artikel im Mandanten A, die es auch in Mandant B gibt.
Nun soll (am besten beim Öffnen der Artikelkarte in Mandant A) geprüft werden ob dieser Artikel auch in Mandant B vorhanden ist, und wenn
er vorhanden ist soll der Wert von Feld X aus Mandant B in Mandan A übernommen werden.
Alternativ könnte man es auch so machen, dass wenn das Feld X in Mandant B geändert wird, der Wert gleich an Mandant A geschickt wird.
Ist das generell möglich? (ohne dieses Intercompanymodul)

Re: Daten zwischen Mandanten abgleichen

17. März 2010 16:42

Beowulf hat geschrieben:Ist das generell möglich? (ohne dieses Intercompanymodul)

Mit Programmierung ist generell (fast) alles möglich :-) . Mit dem Befehl CHANGECOMPANY kann man immer im Code Daten aus/in andere(n) Mandanten transferieren. Das Intercompanymodul nutzt das natürlich auch, ist aber dafür nicht notwendig.

Re: Daten zwischen Mandanten abgleichen

18. März 2010 12:39

Ok, ich hab das jetzt mal auf die Artikelkarte, unter Form - OnAfterGetRecord().
Code:
IF COMPANYNAME = 'Mandant A' THEN BEGIN
Record.CHANGECOMPANY('Mandant B');
IF Record.GET("No.") THEN BEGIN
"Existiert" := TRUE;
"Preis" := Record."Preis";
END;
END;


NAV ändert also den Wert "Exisitiert" in True und übernimmt den Preis, aber wenn ich mit F5 in die Übersicht gehe,
ist "Exisitert" False und der Preis 0.
Mach ich was falsch oder sollte ich das ganze aus der Form raus und in die Table rein packen?

Re: Daten zwischen Mandanten abgleichen

18. März 2010 12:43

Beowulf hat geschrieben:Mach ich was falsch?


(Record war tatsächlich eine angelegte Recordvariable, oder?
Code:
IF COMPANYNAME = 'Mandant A' THEN BEGIN
  Record.CHANGECOMPANY('Mandant B');
  IF Record.GET("No.") THEN BEGIN
    "Existiert" := TRUE;
    "Preis" := Record."Preis";
    MODIFY;
  END;
END;


Such den Unterschied ;-)

Re: Daten zwischen Mandanten abgleichen

18. März 2010 12:45

Kowa hat geschrieben:Mit dem Befehl CHANGECOMPANY kann man immer im Code Daten aus/in andere(n) Mandanten transferieren.

Ich würde es lieber so aufrollen wie Kowa es angedeutet hat.
Beim ändern des Feldes die Änderung gleich in den anderen Mandanten übertragen.
Den es wird seltener vorkommen das der Preis geändert wird, als das jemand die Artikelkarte öffnet.
Das die Änderung nicht übernommen wird, dürfte in deinem Beipsiel an einem fehldenen MODIFY liegen.

Edit: zu langsam ^^

Re: Daten zwischen Mandanten abgleichen

18. März 2010 13:31

Natalie hat geschrieben:
Beowulf hat geschrieben:Mach ich was falsch?


(Record war tatsächlich eine angelegte Recordvariable, oder?
Code:
IF COMPANYNAME = 'Mandant A' THEN BEGIN
  Record.CHANGECOMPANY('Mandant B');
  IF Record.GET("No.") THEN BEGIN
    "Existiert" := TRUE;
    "Preis" := Record."Preis";
    MODIFY;
  END;
END;


Such den Unterschied ;-)


Record ist eine Recordvariable :-)
Jetzt bekomme ich aber eine Fehlermeldung:
Sie können keine Änderung an der Datenbank vornhemen, ehe eine Transaktion gestartet wurde.

Re: Daten zwischen Mandanten abgleichen

18. März 2010 14:03

Beowulf hat geschrieben:Jetzt bekomme ich aber eine Fehlermeldung:
Sie können keine Änderung an der Datenbank vornhemen, ehe eine Transaktion gestartet wurde.
In welchem Trigger steht denn dein Code?

Re: Daten zwischen Mandanten abgleichen

18. März 2010 14:21

Liegt derzeit bei: Form - OnAfterGetRecord

Re: Daten zwischen Mandanten abgleichen

18. März 2010 16:37

Jaaaa, das Thema hatten wir hier ein paar Mal ... Schreibe einen Report, der das Gleiche tut (inkl. dem MODIFY) und ruf diesen Report statt deinen bisherigen Quelltext auf.