Neu Mermalbild auf Artikeletikett drucken

ebayqm

Aktives Mitglied
28. Dezember 2011
10
1
Ich versuche, ein Merkmalbild in unser Produktetikett zu drucken. In den Vorlagen habe ich eine neue Vorlage für Produktetiketten erstellt. Dann habe ich ein Bildfeld mit einer Formel erstellt. Dann habe ich die folgende Sql-Anfrage als Formel eingegeben. Das funktioniert, wenn ich es als Text drucke, aber nicht als Bild. Wie kann ich das beheben?

Als zweites druckt dieser Code nur das erste ausgewählte Merkmal in der gefilterten Gruppe. Normalerweise ist aber mehr als ein Merkmal in einer Gruppe ausgewählt. Ich möchte sie alle nebeneinander drucken. Wie kann ich das machen?

SQL:
JTL_DirectQuery ("SELECT tMerkmalWertSprache.cWert FROM tMerkmalWertSprache
JOIN tArtikelMerkmal ON tArtikelMerkmal.kMerkmalWert=tMerkmalWertSprache.kMerkmalWert
JOIN tmerkmal on tArtikelMerkmal.kMerkmal=tmerkmal.kMerkmal
JOIN tMerkmalSprache ON tArtikelMerkmal.kMerkmal=tMerkmalsprache.kMerkmal
WHERE  tArtikelMerkmal.kArtikel="+Fstr$(Artikel.InterneArtikelnummer,"?")+"
AND tMerkmalWertSprache.kSprache=1
AND tMerkmalSprache.cName='Waschen'")
 

Anhänge

  • Layout.png
    Layout.png
    16 KB · Aufrufe: 6
  • Layout-Vorschau.png
    Layout-Vorschau.png
    26,5 KB · Aufrufe: 6
  • Merkmalbild.png
    Merkmalbild.png
    50,2 KB · Aufrufe: 6

frankell

Sehr aktives Mitglied
9. September 2019
2.685
840
Flensburg
Ich versuche, ein Merkmalbild in unser Produktetikett zu drucken. In den Vorlagen habe ich eine neue Vorlage für Produktetiketten erstellt. Dann habe ich ein Bildfeld mit einer Formel erstellt. Dann habe ich die folgende Sql-Anfrage als Formel eingegeben. Das funktioniert, wenn ich es als Text drucke, aber nicht als Bild. Wie kann ich das beheben?

Als zweites druckt dieser Code nur das erste ausgewählte Merkmal in der gefilterten Gruppe. Normalerweise ist aber mehr als ein Merkmal in einer Gruppe ausgewählt. Ich möchte sie alle nebeneinander drucken. Wie kann ich das machen?

SQL:
JTL_DirectQuery ("SELECT tMerkmalWertSprache.cWert FROM tMerkmalWertSprache
JOIN tArtikelMerkmal ON tArtikelMerkmal.kMerkmalWert=tMerkmalWertSprache.kMerkmalWert
JOIN tmerkmal on tArtikelMerkmal.kMerkmal=tmerkmal.kMerkmal
JOIN tMerkmalSprache ON tArtikelMerkmal.kMerkmal=tMerkmalsprache.kMerkmal
WHERE  tArtikelMerkmal.kArtikel="+Fstr$(Artikel.InterneArtikelnummer,"?")+"
AND tMerkmalWertSprache.kSprache=1
AND tMerkmalSprache.cName='Waschen'")
Kannst Du vielleicht einmal den gesamten Bildcode zeigen? Weil rein nach den Screenshots zu urteilen, übergibst Du tatsächlich nur den Text 40°, was für sich genommen keine Quellangabe ist. Es muss aber eine vollständige Bildquelle aus der gesamten Formel hervorgehen, also bspw. eine URL oder ein vollständiger Dateipfad.
 

ebayqm

Aktives Mitglied
28. Dezember 2011
10
1
Wie Sie schon gesagt haben, verwende ich keine URL oder Dateipfad. Leider bin ich kein Sql-Experte. Ich fand diesen Code im Forum und bearbeitet, um meine Bedürfnisse zu passen. Wie kann ich eine URL oder einen Datapfad hinzufügen?
 

Anhänge

  • code.png
    code.png
    52,6 KB · Aufrufe: 4

frankell

Sehr aktives Mitglied
9. September 2019
2.685
840
Flensburg
Wie Sie schon gesagt haben, verwende ich keine URL oder Dateipfad. Leider bin ich kein Sql-Experte. Ich fand diesen Code im Forum und bearbeitet, um meine Bedürfnisse zu passen. Wie kann ich eine URL oder einen Datapfad hinzufügen?
Ok, das hat allerdings nun nichts mehr mit SQL zu tun. Denn das Ergebnis der Formel muss eine vollständige Quelle werden. Denn irgendwo müssen die Piktogramme ja als Dateien liegen, bspw. auf einer Website, auf einem FTP-Server oder auch auf dem lokalen Rechner.

Nehmen wir an, die Piktogramme sind alle so bezeichnet wie die Merkmale und liegen im Ordner C:\Piktogramme, jeweils mit der Endung .png. Dann müsste sich für 40° aus der kompletten Formel folgendes ergeben: C:\Piktogramme\40°.png

Aktuell gibt die Formel nur 40° aus, siehe links unten im letzten Screenshot. Das ist lediglich der Name des Merkmalwerts für das Merkmal "Waschen" des ausgewählten Artikels. Genau das macht die SQL-Abfrage, nicht mehr.

Es muss also davor der Teil C:\Piktogramme\ und danach der Teil .png ergänzt werden:

Code:
"C:\Piktogramme\" +
JTL_DirectQuery ("SELECT tMerkmalWertSprache.cWert FROM tMerkmalWertSprache
JOIN tArtikelMerkmal ON tArtikelMerkmal.kMerkmalWert=tMerkmalWertSprache.kMerkmalWert
JOIN tmerkmal on tArtikelMerkmal.kMerkmal=tmerkmal.kMerkmal
JOIN tMerkmalSprache ON tArtikelMerkmal.kMerkmal=tMerkmalsprache.kMerkmal
WHERE  tArtikelMerkmal.kArtikel="+Fstr$(Artikel.InterneArtikelnummer,"?")+"
AND tMerkmalWertSprache.kSprache=1
AND tMerkmalSprache.cName='Waschen'")
+ ".png"

Ich empfehle dringend eine weitere Auseinandersetzung mit dem Formaleditor, bspw. über das Handbuch: chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.combit-support.net/docs/ll/de/combit-listlabel-designer-handbuch.pdf
 

ebayqm

Aktives Mitglied
28. Dezember 2011
10
1
Mit Ihrer Hilfe und einigen Gesprächen habe ich die perfekte Lösung für mich gefunden. Ich habe die Bilder lokal auf dem Server gespeichert und wähle den Merkmalswert nach der Ordnungsnummer aus. So kann ich jetzt mehrere Merkmalsbilder nebeneinander drucken. Hier ist mein endgültiger Code

SQL:
Drawing(
    JTL_DirectQuery("SELECT BildPfad
    FROM (
        SELECT
            'C:/.../Merkmalbilder/' + tMerkmalSprache.cName +'/'+ tMerkmalWertSprache.cWert + '.png' AS BildPfad,
            ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum
        FROM tMerkmalWertSprache
        JOIN tArtikelMerkmal ON tArtikelMerkmal.kMerkmalWert = tMerkmalWertSprache.kMerkmalWert
        JOIN tMerkmal ON tArtikelMerkmal.kMerkmal = tMerkmal.kMerkmal
        JOIN tMerkmalSprache ON tArtikelMerkmal.kMerkmal = tMerkmalSprache.kMerkmal
        WHERE tArtikelMerkmal.kArtikel = " + Fstr$(Artikel.InterneArtikelnummer, "?") + "
        AND tMerkmalSprache.kSprache = 1
        AND tMerkmalSprache.cName = 'Waschen'
    ) AS Subquery
    WHERE RowNum = 1")
)
 

frankell

Sehr aktives Mitglied
9. September 2019
2.685
840
Flensburg
Mit Ihrer Hilfe und einigen Gesprächen habe ich die perfekte Lösung für mich gefunden. Ich habe die Bilder lokal auf dem Server gespeichert und wähle den Merkmalswert nach der Ordnungsnummer aus. So kann ich jetzt mehrere Merkmalsbilder nebeneinander drucken. Hier ist mein endgültiger Code

SQL:
Drawing(
    JTL_DirectQuery("SELECT BildPfad
    FROM (
        SELECT
            'C:/.../Merkmalbilder/' + tMerkmalSprache.cName +'/'+ tMerkmalWertSprache.cWert + '.png' AS BildPfad,
            ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum
        FROM tMerkmalWertSprache
        JOIN tArtikelMerkmal ON tArtikelMerkmal.kMerkmalWert = tMerkmalWertSprache.kMerkmalWert
        JOIN tMerkmal ON tArtikelMerkmal.kMerkmal = tMerkmal.kMerkmal
        JOIN tMerkmalSprache ON tArtikelMerkmal.kMerkmal = tMerkmalSprache.kMerkmal
        WHERE tArtikelMerkmal.kArtikel = " + Fstr$(Artikel.InterneArtikelnummer, "?") + "
        AND tMerkmalSprache.kSprache = 1
        AND tMerkmalSprache.cName = 'Waschen'
    ) AS Subquery
    WHERE RowNum = 1")
)
Prima!
Wenn nSort nicht sauber und einheitlich "geführt" wird, ist das sicher eine adäquate Lösung, wenn es gleichzeitig mehr als eine Merkmalsausprägung pro Artikel gibt.
 

Ähnliche Themen