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