Neu List & Label Vorlagen: SQL Injection Warnung umgehen um Datenquelle zu ergänzen

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
144
16
Wir möchten via List & Label eine generierte Tabelle auf Basis der Auftragspositionen ausgeben lassen.

Leider verhindert List & Label die Abfrage mittels folgendem Code mit der Begründung:

blocked possible malicious sql command

Hat jemand eine Idee wie man das umgehen könnte?

Hier der Code:

SQL:
DECLARE @returnTable TABLE ([dVoraussichtlichesLieferdatum] DATETIME, [data] NVARCHAR(MAX), [blisterSize] INT)
    DECLARE @kAuftrag INT, @lieferDatum DATETIME, @strain NVARCHAR(MAX), @amount INT, @vendor NVARCHAR(MAX)
    DECLARE auftragsCursor CURSOR FOR

    SELECT
        auftrag.[kAuftrag],
        auftrag.[dVoraussichtlichesLieferdatum],
        [DGIntern].[dbo].[GetTextBetweenPipe](aPos.[cName]),
        aPos.[fAnzahl],
        hersteller.[cName]
    
    FROM
        [Verkauf].[tAuftrag] auftrag

    INNER JOIN
        [Verkauf].[tAuftragPosition] aPos
    ON
        auftrag.[kAuftrag] = aPos.[kAuftrag]
        AND [cArtNr] LIKE 'STE%'
        AND [fAnzahl] > 0

    INNER JOIN
        [dbo].[tArtikel] artikel
    ON
        aPos.[kArtikel] = artikel.[kArtikel]

    INNER JOIN
        [dbo].[tHersteller] hersteller
    ON
        artikel.[kHersteller] = hersteller.[kHersteller]

    WHERE
        [cAuftragsNr] = 'A-123456'

    ORDER BY
        [fAnzahl] DESC

    OPEN auftragsCursor
    FETCH NEXT FROM auftragsCursor INTO @kAuftrag, @lieferDatum, @strain, @amount, @vendor
    
    DECLARE @totalCount INT = (SELECT SUM([fAnzahl]) FROM [Verkauf].[tAuftragPosition] WHERE [kAuftrag] = @kAuftrag AND [cArtNr] LIKE 'STE%')
    DECLARE @amountBlister3 INT = (SELECT [Development].[CalculateBlisterAmount](@totalCount, 1))
    DECLARE @amountBlister6 INT = (SELECT [Development].[CalculateBlisterAmount](@totalCount, 0))

    DECLARE @formerRowData NVARCHAR(MAX) = '', @formerRowOverflow INT = 0, @diff INT

    WHILE @@FETCH_STATUS = 0
        BEGIN

        DECLARE @currentRowData NVARCHAR(MAX) = (SELECT @strain + ' (' + @vendor + ')')

        IF (@amountBlister6 > 0)
            BEGIN

                WHILE @amount > 0
                    BEGIN

                        SET @diff = 6 - @formerRowOverflow

                        IF (@amount >= @diff)
                            BEGIN

                                SET @currentRowData = CAST(@diff AS NVARCHAR(MAX)) + 'x ' + @strain + ' (' + @vendor + ')'

                                IF (@formerRowOverflow > 0)
                                    SET @currentRowData = @formerRowData + ' + ' + @currentRowData

                                INSERT INTO @returnTable
                                SELECT @lieferDatum, @currentRowData, 6

                                SET @amount = @amount - @diff
                                SET @amountBlister6 = @amountBlister6 - 1
                                SET @formerRowOverflow = 0
                                SET @formerRowData = ''

                            END

                        ELSE
                            BEGIN

                                SET @formerRowOverflow =  @formerRowOverflow + @amount
                                SET @formerRowData = @formerRowData + IIF(LEN(@formerRowData) = 0, '', ' + ') + CAST(@amount AS NVARCHAR(MAX)) + 'x ' + @strain + ' (' + @vendor + ')'
                                SET @amount = 0

                            END

                    END

            END

        ELSE IF (@amountBlister3 > 0)
            BEGIN

                WHILE @amount > 0
                    BEGIN

                        SET @diff = 3 - @formerRowOverflow

                        IF (@amount >= @diff)
                            BEGIN

                                SET @currentRowData = CAST(@diff AS NVARCHAR(MAX)) + 'x ' + @strain + ' (' + @vendor + ')'

                                IF (@formerRowOverflow > 0)
                                    SET @currentRowData = @formerRowData + ' + ' + @currentRowData

                                INSERT INTO @returnTable
                                SELECT @lieferDatum, @currentRowData, 3

                                SET @amount = @amount - @diff
                                SET @amountBlister3 = @amountBlister3 - 1
                                SET @formerRowOverflow = 0
                                SET @formerRowData = ''

                            END

                        ELSE
                            BEGIN

                                SET @formerRowOverflow =  @formerRowOverflow + @amount
                                SET @formerRowData = @formerRowData + IIF(LEN(@formerRowData) = 0, '', ' + ') + CAST(@amount AS NVARCHAR(MAX)) + 'x ' + @strain + ' (' + @vendor + ')'
                                SET @amount = 0

                            END

                    END

            END

        FETCH NEXT FROM auftragsCursor INTO @kAuftrag, @lieferDatum, @strain, @amount, @vendor

        END

    CLOSE auftragsCursor
    DEALLOCATE auftragsCursor

    IF (@formerRowOverflow > 0)
        BEGIN

        INSERT INTO @returnTable
        SELECT @lieferDatum, @formerRowData, IIF(@formerRowOverflow > 3, 6, 3)

        END

    SELECT * FROM @returnTable
 

John

Sehr aktives Mitglied
3. März 2012
3.025
652
Berlin
Ich denke, die inserts sind das Problem.
Das Ganze in eine eigene stored procedure oder view in die Datenbank integrieren und nur noch diese aufrufen?
 

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
144
16
Stored Procedures lässt er leider auch nicht zu:

EXEC [Development].[BlisterLabels] 'A-105347'
 

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
144
16
Habens hinbekommen, nun benötigen wir einen Zeilenumbruch, da die Ausgabe mehrere Zeilen enthält

Der Code sieht aktuell wie folgt aus:

Code:
JTL_DirectTableQuery("SELECT * FROM [Development].[GetBlisterLabels]('" + Report.SalesOrderNumber + "')", " ", "")
 

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
144
16
Weiters stellt sich mir die Frage, wie ich die Daten in eine Tabelle bekomme.

Gibt es eine Möglichkeit die Ausgabe (der SQL Abfrage) als Datenquelle für eine Tabelle anzugeben, in der ich dann die einzelnen Spalten und Zeilen wie gewohnt in L&L (designtechnisch) erstellen/bearbeiten kann?
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.496
442
Wie sieht denn dein bisheriger Code aus?
Also nicht die SQL Abfrage (denn das funktioniert ja so wie du oben sagst), sondern der Teil wo du mit dem Ergebnis etwas machst.
 

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
144
16
Hier die Ausgabe, die ich gerne in einzelne Zeilen hätte:


und hier der Code den ich dafür verwende:


Code:
JTL_DirectTableQuery("SELECT  *  FROM [Development].[GetBlisterLabels]('" + Vorgang.Auftragsnummer + "') ",",",",")
 

Anhänge

  • Screenshot 2024-08-07 135911.png
    Screenshot 2024-08-07 135911.png
    7,6 KB · Aufrufe: 4

DrGreen

Gut bekanntes Mitglied
24. Dezember 2017
144
16
Hier die Ausgabe, die ich gerne in einzelne Zeilen hätte:


und hier der Code den ich dafür verwende:


Code:
JTL_DirectTableQuery("SELECT  *  FROM [Development].[GetBlisterLabels]('" + Vorgang.Auftragsnummer + "') ",",",",")
Am Allerliebsten wäre es mir sogar, wenn ich die Möglichkeit hätte die ersten 6 Zeilen auf Seite 1 auszugeben, die nächsten 6 Zeilen auf Seite 2 usw...
 
Ähnliche Themen
Titel Forum Antworten Datum
[BUG]🪲 Stücklisten Komponenten im Lieferschen (List & Label) ausgeben | Komponenten-Menge falsch + [Workaround] JTL-Wawi 1.9 1
Neu List&Label QRCode Wawi 1.8 auf 1.9 Bug JTL-Wawi - Fehler und Bugs 4
Neu List & Label 28 Variablen/Felder Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Firmenzusatz fehlt auf DHL Label JTL-ShippingLabels - Fehler und Bugs 0
Neu Zusätzliche Nummer auf das DHL Label bringen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu JTL Shipping, DHL Label Pakete mit erhöhtem Gewicht, Kennzeichnung JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu Keine DPD label über JTL Packtisch JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu DHL Label für Hin-und Rückversand User helfen Usern - Fragen zu JTL-Wawi 4
Neu Erweiterte Eigenschaft Label auslesen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Gewicht fehlt beim Drucken von Label (Freiposition) Shopify-Connector 0
Überbeträge auf Vorlagen JTL-Wawi 1.7 0
JTL WAWi 1.9 und Standard Vorlagen 2.0 - Druckvorlagen JTL-Wawi 1.9 4
Neu Neue Vorlagen 2.0 Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Ebay Vorlagen ändern und danach Ebay Angebot? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Wieso gibt es keine Maßeinheit "Stück" bei eBay-Vorlagen eBay-Anbindung - Fehler und Bugs 0
[Bug] 🪲 JTL-Wawi 1.9 E-Mail Vorlagen: {{Company.Email}} mappt auf ehem {{ Firma.EMailAbsender }} nicht auf {{ Firma.Email }} JTL-Wawi 1.9 1
JTL-Wawi 1.9 | Durcheinander: Variablen englisch 🇬🇧, DB deutsch 🇩🇪 , Vorlagen teils deutsch, teils englisch 🇬🇧, keine Performancesteigerung 🐌🐌 JTL-Wawi 1.9 5
Neu Teuerungszuschlag mit in die Vorlagen einbinden Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Druck Vorlagen Absatzeigenschaften - Adressfeld - Formatierung in einer Zeile unterschiedlich User helfen Usern - Fragen zu JTL-Wawi 0
Neu Aus vorlagen Artikel einstellen JTL-Wawi 1.7 5

Ähnliche Themen