EulandaXtools — Funktionsreferenz
Erzeugt eine SQL-WHERE-Bedingung aus drei Breadcrumb-Listen (UND, ODER, NICHT) für den EULANDA-Merkmalbaum.
New-SqlWhereForBreadcrumb [-TableName] <string> [[-AndPathList] <string[]>] [[-OrPathList]
<string[]>] [[-NotPathList] <string[]>] [-Conn] <__ComObject> [[-IdExpression] <string>]
[[-SchemaName] <string>] [[-DatabaseName] <string>] [-Pretty] [-IgnoreMissingPath]
[[-TableAlias] <string>] [<CommonParameters>]Die Funktion nimmt drei Listen mit Breadcrumb-Pfaden (UND / ODER / NICHT) und löst diese gegen den EULANDA-Merkmalbaum auf.
Pro Breadcrumb-Pfad wird der zugehörige Merkmalknoten ermittelt. Danach werden alle untergeordneten Endknoten (MerkmalTyp 1 und 2) eingesammelt. Für diese Endknoten gilt:
Aus den Prädikaten wird die Logik aufgebaut:
-TableName
Type: stringTabellenname im EULANDA-Merkmalbaum, z.B. 'Adresse', 'Artikel', 'Rechnung'.
-AndPathList
Type: string[]
Default: @()Liste von Breadcrumb-Pfaden, die als UND verknüpft werden.
-OrPathList
Type: string[]
Default: @()Liste von Breadcrumb-Pfaden, die als ODER-Gruppe verknüpft werden.
-NotPathList
Type: string[]
Default: @()Liste von Breadcrumb-Pfaden, die als NICHT-Gruppe verknüpft werden.
-Conn
Type: __ComObjectOffene ADODB-Verbindung zur EULANDA-Datenbank.
-IdExpression
Type: string
Default: 'id'SQL-Ausdruck für das Objekt-ID-Feld im Kontext der späteren Abfrage. Default ist 'id', aber auch mit Prefix wie 'a.Id' wäre möglich.
-SchemaName
Type: string
Default: 'dbo'Schema für Merkmal- und Merkmalelement-Tabelle. Default 'dbo'.
-DatabaseName
Type: string
Default: ''Optionaler Datenbankname für die Qualifizierung der Tabellen. Wenn leer, wird versucht den Katalognamen aus der ADO-ConnectionString zu lesen. Wenn das nicht klappt, wird ohne Datenbankpräfix gearbeitet.
-Pretty
Type: switchFormatiert die Ausgabe mit Zeilenumbrüchen und Einrückung.
-IgnoreMissingPath
Type: switchWenn gesetzt, werden nicht auflösbare Pfade still übersprungen (sonst Throw).
stringSQL-WHERE-Bedingung (ohne führendes WHERE).
# Gleiche Logik, aber mit Alias in deiner späteren Abfrage
$where = New-SqlWhereForBreadcrumb -TableName 'Adresse' -AndPathList '\ADRESSEN\A' -Conn $conn -IdExpression 'a.Id'# Erstellt eine SQL-WHERE-Klausel aus Breadcrumb-Pfaden mit AND-, OR- und NOT-Logik
$udl = 'C:\Config\Database.udl'
$conn = Get-ConnByUdl -Udl $udl
$andPathList = @(
'\Products\Active'
)
$orPathList = @(
'\Products\New',
'\Products\Extensions\Deprecated'
)
$notPathList = @(
'\Products\Legacy'
)
$where = New-SqlWhereForBreadcrumb `
-TableName 'Address' `
-AndPathList $andPathList `
-OrPathList $orPathList `
-NotPathList $notPathList `
-Conn $conn `
-IdExpression 'Id' `
-Pretty
$sql = "SELECT * FROM Address WHERE $where"Der Merkmalbaum ist hierarchisch aufgebaut. Jeder Merkmalknoten besitzt einen eindeutigen Pfad (Breadcrumb), der seine Position im Baum beschreibt und zur eindeutigen Adressierung verwendet wird.