Rename Eulanda Dms Folder
Zuletzt geändert: 19.04.2026 03:36

Übersicht

Rename-EulandaDmsFolder #

ÜBERSICHT #

Benennt den DMS-Ordner eines Datensatzes um, nachdem sich dessen FolderName-Wert in der Datenbank geändert hat (z.B. Adresse.Match, Artikel.ArtNummer, ServiceArtikel.SarNummer).

SYNTAX #

Rename-EulandaDmsFolder [-DataObject] <string> [-Id] <int> [-OldFolderName] <string> [[-Conn]
    <__ComObject>] [[-Udl] <string>] [[-ConnStr] <string>] [<CommonParameters>]

BESCHREIBUNG #

Typischer Anwendungsfall: Der Anwender ändert Adresse.Match im ERP. Der DMS-Ordner heißt aber weiterhin nach dem alten Match. Diese Funktion zieht den Ordner atomar auf den neuen Namen um – alle darunter liegenden Unterstrukturen (Auftrag, Lieferschein, Rechnung, Kontakt etc.) wandern mit, weil das Dateisystem den Eltern-Ordner als Ganzes verschiebt.

Der neue Pfad wird per Resolve-EulDmsFolder aus der aktuellen DB-Config berechnet. Den alten Pfad konstruiert die Funktion aus dem gemeinsamen Parent und dem vom Caller mitgegebenen -OldFolderName. Der Caller muss sich also den alten Wert vor dem DB-Update merken.

Sinnvoll nur für text-basierte FolderName-Felder, die der User ändern kann:

  • Eulanda.Adresse (Match)
  • Eulanda.Kreditor (Match)
  • Eulanda.Artikel (ArtNummer)
  • Eulanda.ServiceArtikel (SarNummer)
  • Eulanda.SepaMandat (MandatsReferenz)

Für ID- oder KopfNummer-basierte DataObjects (Auftrag, Rechnung, Lieferschein, Kontakt, ArtikelIdent etc.) ist Rename nicht nötig – der Wert ändert sich nie.

Idempotenz-Verhalten: Die Funktion liefert ein PSCustomObject mit dem Feld Action, das einen der folgenden Werte hat:

  • NoChange Alter == Neuer Pfad (z.B. Match auf gleichen Wert gesetzt)
  • NothingToDo Weder alter noch neuer Ordner existiert im DMS
  • AlreadyMoved Neuer Pfad existiert, alter nicht – schon umgezogen
  • Moved Alter Pfad existierte, wurde auf neuen Pfad verschoben

Konflikt: Wenn beide Pfade existieren, wirft die Funktion – das muss manuell aufgeloest werden (welcher ist der richtige?).

PARAMETER #

-DataObject #

Type: string

Qualifizierter DataObject-Name (z.B. Eulanda.Adresse, Eulanda.Artikel).

-Id #

Type: int

Datensatz-ID (Primärschlüssel in der zugehörigen Tabelle).

-OldFolderName #

Type: string

Der alte FolderName-Wert, unter dem der Ordner heute noch im Dateisystem liegt. Typisch: der Match/ArtNummer/SarNummer-Wert vor dem DB-Update.

-Conn #

Type: __ComObject

Bereits offene ADODB-Verbindung.

-Udl #

Type: string

UDL-Dateipfad zur Verbindung.

-ConnStr #

Type: string

ADODB-Connection-String zur Verbindung.

AUSGABEN #

PSCustomObject mit `OldPath`, `NewPath`, `Action`.

BEISPIELE #

# Match einer Adresse ändern und DMS-Ordner mitnehmen
$id = 42
$oldMatch = (Invoke-AdodbQuery -Conn $conn -Sql "SELECT Match FROM Adresse WHERE Id = $id").Match
Invoke-AdodbNonQuery -Conn $conn -Sql "UPDATE Adresse SET Match = 'NEUMATCH' WHERE Id = $id"
Rename-EulandaDmsFolder -DataObject 'Eulanda.Adresse' -Id $id -OldFolderName $oldMatch -Conn $conn
# Artikel-Nummer ändern
Rename-EulandaDmsFolder -DataObject 'Eulanda.Artikel' -Id 17 -OldFolderName '1100' -Conn $conn