Erweiterung einer Abfrage ... Textausgabe List&Label mit Zeilenumbruch

chgs2013

Aktiver Benutzer
Beiträge
37
Hallo zusammen,

wieder mal suche ich eine speziellere Lösung, zur Ausgabe von zusätzlichen Infos.
Diese Abfrage ist für Combit List&Label, eine Software um zB Rechnungsvorlagen zu generieren. Die Daten liegen in einer MS SQL DB und werden somit ausgelesen.
Das ganze ist sicherlich eine kleinere Herausforderung.


Ich habe folgende SQL-Abfrage, die prüft Artikel auf Stücklistenartikel und gibt diese als Liste aus, in diesem Fall Artikelnummer und Artikelname.

Code:
DECLARE @cName VARCHAR(1024)
SELECT @cName = COALESCE(@cName  + '¶', '') + '['+tArt2.cArtNr + '] ' + tArt2.cName from tArtikel
LEFT JOIN tStueckliste ON tStueckliste.kStueckliste = tArtikel.kStueckliste
LEFT JOIN tArtikel AS tArt2 ON tArt2.kArtikel = tStueckliste.kArtikel
WHERE tArtikel.cArtNr='"+VKS-RL180+"'
SELECT cName = @cName




Ich möchte die Abfrage nun so umbauen, dass mir das Lager und der Lagerplatz des Artikels angegeben wird.
Da es für jeden Artikel mehrere Lager und Lagerplätze geben kann, macht es mir Probleme. :-(


Implementiert werden müsste nun folgendes, der Lagername (cName) und das Lagerregal (cKommentar_1) und das Lagerfach (cKommentar_2).


Der Aufbau der Tabellen siehe Bilder. In den Bildern sind Texte farblich hinterlegt, anbei die Erläuterung:

lila = Tabellenname
rot = Artikel-ID die übereinstimmen
grün = muss in Abhängigkeit zu rot sein "tArtikel.cArtNr=Positionen.ArtNr"
blau = Warenlager-ID die übereinstimmen muss



Meine Wunschausgabe als Text wäre später so, dass der Artikel selbst nur einmal erscheint, aber untereinander alle Lager und deren Platz:

ArtNr ... Artikelname ... Lager ... Lagerregal ... Lagerfach
XXX ... Relais ... Lagerhalle 1 ... Regal 01-03 ... Fach 3
......................... Lagerhalle 2 ... Regal 01-02 ... Fach 13


Danke für Eure Hilfe ....
 

Anhänge

  • twarenlagerplatzartikel.jpg
    twarenlagerplatzartikel.jpg
    43,2 KB · Aufrufe: 2
  • tartikel.jpg
    tartikel.jpg
    16,2 KB · Aufrufe: 1
  • twarenlager.jpg
    twarenlager.jpg
    17,9 KB · Aufrufe: 1
Werbung:

chgs2013

Aktiver Benutzer
Beiträge
37
Abfragen kann ich die Lager ja so

Code:
(SELECT    tWarenLager.cName, tWarenLagerPlatzArtikel.cKommentar_1, tWarenLagerPlatzArtikel.cKommentar_2
FROM        tartikel INNER JOIN
                      tWarenLagerPlatzArtikel ON tartikel.kArtikel = tWarenLagerPlatzArtikel.kArtikel INNER JOIN
                      tWarenLager ON tWarenLagerPlatzArtikel.kWarenLagerPlatz = tWarenLager.kWarenLager
WHERE tartikel.cArtNr = 'VKS-RL180')
 

akretschmer

Datenbank-Guru
Beiträge
9.171
Kann keiner hierzu helfen, wie ich die Abfrage damit erweitern kann? ... erhalte immer einen Fehler in der Ausgabe :(

Vorweg: ich nix M$SQL, die Syntax ist, ähm, anders als z.B. in PG.

Du hast gefragt:

Code:
Meine Wunschausgabe als Text wäre später so, dass der Artikel selbst nur einmal erscheint, aber untereinander alle Lager und deren Platz:

Ich könnte mir vorstellen, daß Du via row_number() oder einer vergleichbaren Funktion je Artikel die Zeilen zählst. In einem äußeren Select gibts Du nur den Artikel aus, wenn diese row_number() - Zeile 1 ist, sonst '' oder '...' oder gelb-gestreifte Dreiecke...

Andreas
 

chgs2013

Aktiver Benutzer
Beiträge
37
So wie es scheint, kann man mit meiner Abfrage nicht mehrere Lager usw. ausgeben.


Wie kann ich denn zumindest meine Abfrage erweitern, dass mir cKommentar_1 mit dazu ausgegeben wird?
Code:
DECLARE @cName VARCHAR(1024)
SELECT @cName = COALESCE(@cName  + '¶', '') + '['+tArt2.cArtNr + '] ' + tArt2.cName from tArtikel
LEFT JOIN tStueckliste ON tStueckliste.kStueckliste = tArtikel.kStueckliste
LEFT JOIN tArtikel AS tArt2 ON tArt2.kArtikel = tStueckliste.kArtikel
WHERE tArtikel.cArtNr='"+VKS-RL180+"'
SELECT cName = @cName
 

ukulele

Datenbank-Guru
Beiträge
4.416
Du musst dir erstmal darüber klar werden dass du in einem Select immer nur eine Zeile pro Artikel ausgeben kannst. Wenn du nun beliebig viele Lagerplätze dazu anzeigen möchtest, ist der einfachste Weg den Artikel mehrfach auszugeben oder nur den ersten Lagerplatz. Mehrere Lagerplätze in einer Zeile geht auch, ist aber sehr sehr aufwendig. Genauso Zeilen, die vorne keine Informationen haben wie in deinem Beispiel.

Kannst du in List&Label mehrere Unterabfragen einbauen oder verarbeitet das wirklich nur einen Select? Ich nutze nur Combit CRM, hatte mit L&L noch nicht das Vergnügen.
 

chgs2013

Aktiver Benutzer
Beiträge
37
... ich baue gerne vorab im Editor MS SQL Management Studio meine Abfragen auf, suche hier eben nach den Identnummer, hier werden mir komischerweise ja alle Zeilen ausgegeben, was im L&L nicht klappt (was ich nicht kapiere).
 

ukulele

Datenbank-Guru
Beiträge
4.416
Dann ist das vermutlich so ähnlich wie die Filter im CRM. Dort baut man auch nur einen SQL Select auf die SID und die Ausgabe der Spalten ist dann Sache der Ansicht / des Containers etc. In sofern wirst du vermutlich in SQL eine Sicht anlegen müssen und deinem List & Label diese dann präsentieren müssen (Im CRM müsste ich dafür eine eigene Maske mit eigenen Referenzen bauen, geht aber).
 

chgs2013

Aktiver Benutzer
Beiträge
37
ok, wenn das nicht anders machbar ist, wird sich das wohl erübrigt haben ...

L&L ist in einer Software als Vorlagendesigner implementiert ...
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.416
Möglich ist das schon wenn du einen funktionierenden Select hast kannst du den zumindest immer per Sicht nutzen. Ich verstehe allerdings dein Datenmodell und deine Abfragen noch nicht so ganz. Wiso deklarierst du immer eine Variable?
 
Oben