Danke für den Tipp und Link. Ich glaube ich verstehe es zum größten Teil. tAuftragAttribut habe ich gesucht, da finde ich aber nur 4 Spalten: kAuftragAttribut | kAuftrag | kAttribut | bRowversion. Aber keinen Hinweis auf meine Eigene Felder.
Ok, dann Schritt für Schritt:
Der Wert, den Du ausgeben möchtest, findet sich in Verkauf.tAuftragAttributSprache. Das ist entweder cWertVarchar (bei Datentyp Text) oder nWertInt (bei Datentyp Ganzzahl oder Datentyp Checkbox (1, 0)) oder fWertDecimal oder dWertDateTime (beides wohl selbsterklärend). Dein Anker ist kAuftragAttribut. Um zu wissen, zu welchem Auftrag das gewünschte kAuftragAttribut gehört, gehst Du in die Tabelle Verkauf. tAuftragAttribut. Die beinhateltet kAuftragAttribut (von gerade eben) und kAuftrag. Zusätzlich ist da noch kAttribut. Das reicht bereits für eine Abfrage, wenn Du kAttribut Deines Eigenen Feldes kennst.
Wenn Du das aber nicht kennst, sondern in der Abfrage lieber die Bezeichnung des Eigenen Feldes verwenden möchtest, musst Du zusätzlich an dbo.tAttributSprache ran. Denn dort steht neben kAttribut auch die Bezeichnung des Eigenen Feldes in cName.
So hangelt man sich von Tabelle zu Tabelle wie halt in dem Beispiel mit Artikelattributen:
SELECT nWertInt FROM tArtikelAttributSprache AS ARTATTS
LEFT JOIN tArtikelAttribut AS ARTATT ON ARTATTS.kArtikelAttribut = ARTATT.kArtikelAttribut
LEFT JOIN tAttributSprache AS ATTS ON ARTATT.kAttribut = ATTS.kAttribut
WHERE ATTS.cName = 'Bezeichnung Eigenes Feld' AND ATTS.kSprache = 0 AND ARTATTS.kSprache = 0 AND ARTATT.kArtikel = ...
Das muss natürlich in die Export-Query entsprechend mit eingebaut werden.
Der vollständige Code lautet (nur für ein Eigenes Feld mit Ganzzahl oder Checkbox), um das Ganze mal aufzulösen:
SQL:
SELECT
A.cAuftragsNr AS 'Auftragsnr.',
A.dErstellt AS 'Datum',
(
SELECT
nWertInt
FROM
Verkauf.tAuftragAttributSprache AS AATTS
LEFT JOIN Verkauf.tAuftragAttribut AS AATT ON AATTS.kAuftragAttribut = AATT.kAuftragAttribut
LEFT JOIN tAttributSprache AS ATTS ON AATT.kAttribut = ATTS.kAttribut
WHERE
ATTS.cName = 'Bezeichnung Eigenes Feld'
AND ATTS.kSprache = 0
AND AATTS.kSprache = 0
AND AATT.kAuftrag = A.kAuftrag
) AS 'Wert 1'
FROM
Verkauf.tAuftrag AS A
Man kann das Ganze auch noch etwas effizienter über CTEs machen, aber ich glaube, so kannst Du das erst mal gut nachvollziehen und den Code entsprechend um Deine Eigenen Felder ergänzen bzw. ändern.