New-SqlWhereForBreadcrumb

EulandaXtools — Funktionsreferenz

New-SqlWhereForBreadcrumb

ÜBERSICHT

Erzeugt eine SQL-WHERE-Bedingung aus drei Breadcrumb-Listen (UND, ODER, NICHT) für den EULANDA-Merkmalbaum.

SYNTAX

New-SqlWhereForBreadcrumb [-TableName] <string> [[-AndPathList] <string[]>] [[-OrPathList]
    <string[]>] [[-NotPathList] <string[]>] [-Conn] <__ComObject> [[-IdExpression] <string>]
    [[-SchemaName] <string>] [[-DatabaseName] <string>] [-Pretty] [-IgnoreMissingPath]
    [[-TableAlias] <string>] [<CommonParameters>]

BESCHREIBUNG

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:

PARAMETER

-TableName

Type: string

Tabellenname 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: __ComObject

Offene 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: switch

Formatiert die Ausgabe mit Zeilenumbrüchen und Einrückung.

-IgnoreMissingPath

Type: switch

Wenn gesetzt, werden nicht auflösbare Pfade still übersprungen (sonst Throw).

AUSGABEN

string

SQL-WHERE-Bedingung (ohne führendes WHERE).

BEISPIELE

# 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"

HINWEISE

Der Merkmalbaum ist hierarchisch aufgebaut. Jeder Merkmalknoten besitzt einen eindeutigen Pfad (Breadcrumb), der seine Position im Baum beschreibt und zur eindeutigen Adressierung verwendet wird.