CustomWorkflow Merkmale setzen

Lev1ath4n

Neues Mitglied
5. November 2024
8
3
Hallo zusammen,

Ich versuche aktuell einen eigenen Custom Workflow zu schreiben, bekomme laut Wawi aber immer folgende Fehlermeldung beim ausführen:

Fehler beim Konvertieren des nvarchar-Werts "Maßstab" in den int-Datentyp. BrowsePk: 3 WorkflowAktionId: 4 callerMemberName: AktionAusfuehren


Ich verstehe nicht so ganz wieso er hier überhaupt versucht irgendwas zu Konvertieren, vielleicht hat ja aber jemand von euch eine Ahnung bzw Idee.

SQL:
CREATE TYPE CustomWorkflows.Parameter_spMerkmaleSetzen_Merkmal FROM

NVARCHAR(255);

GO


CREATE TYPE CustomWorkflows.Parameter_spMerkmaleSetzen_Wert FROM

NVARCHAR(255);

GO


EXEC CustomWorkflows._SetActionParameterDisplayName

@parameterName = 'Parameter_spMerkmaleSetzen_Merkmal',

@displayName = 'Merkmal'

GO


EXEC CustomWorkflows._SetActionParameterDisplayName

@parameterName = 'Parameter_spMerkmaleSetzen_Wert',

@displayName = 'Wert'

GO


CREATE PROCEDURE CustomWorkflows.spMerkmalSetzen @kArtikel INT,

@cMerkmal Parameter_spMerkmaleSetzen_Merkmal, @cWert Parameter_spMerkmaleSetzen_Wert, @MerkmalINT INT, @WertINT INT

AS

BEGIN


    SELECT @MerkmalINT = [kMerkmal]

    FROM [eazybusiness].[dbo].[tMerkmalSprache]

    WHERE cName = @cMerkmal


    SELECT @WertINT = [kMerkmalWert]

    FROM [eazybusiness].[dbo].[tMerkmalWertSprache]

    WHERE cWert = @cWert


    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)

    VALUES (@MerkmalINT, @WertINT, @kArtikel)


END


Versuche ich das ganze selbst über SQL auszuführen Funktioniert es ohne Probleme (Beispiel):

SQL:
DECLARE @kArtikel INT, @cMerkmal NVARCHAR(255), @cWert NVARCHAR(255), @MerkmalINT INT, @WertINT INT
    
    SET @kArtikel = '3'
    SET @cMerkmal = 'Maßstab'
    SET @cWert = '1:18'
    
    SELECT @MerkmalINT = [kMerkmal]
    FROM [eazybusiness].[dbo].[tMerkmalSprache]
    WHERE cName = @cMerkmal

    SELECT @WertINT = [kMerkmalWert]
    FROM [eazybusiness].[dbo].[tMerkmalWertSprache]
    WHERE cWert = @cWert

    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)
    VALUES (@MerkmalINT, @WertINT, @kArtikel)
 

Lev1ath4n

Neues Mitglied
5. November 2024
8
3
Update:

Der Workflow Funktioniert doch. Eine Bereits erstelle Prozedur kann man nur nicht Überschreiben sondern muss sie mit einem anderen Befehl Ändern:


SQL:
ALTER PROCEDURE [CustomWorkflows].[spMerkmalSetzen]
AS
BEGIN

    ...

END

Außerdem musste ich eine Kleine Sache noch ändern. Wer interesse an dem Workflow hat hier einmal der Vollständig Funktionale:


SQL:
CREATE TYPE CustomWorkflows.Parameter_spMerkmaleSetzen_Merkmal FROM
NVARCHAR(255);
GO

CREATE TYPE CustomWorkflows.Parameter_spMerkmaleSetzen_Wert FROM
NVARCHAR(255);
GO

EXEC CustomWorkflows._SetActionParameterDisplayName
@parameterName = 'Parameter_spMerkmaleSetzen_Merkmal',
@displayName = 'Merkmal'
GO

EXEC CustomWorkflows._SetActionParameterDisplayName
@parameterName = 'Parameter_spMerkmaleSetzen_Wert',
@displayName = 'Wert'
GO

CREATE PROCEDURE CustomWorkflows.spMerkmalSetzen @kArtikel INT,
@cMerkmal Parameter_spMerkmaleSetzen_Merkmal, @cWert Parameter_spMerkmaleSetzen_Wert
AS
BEGIN

   
    DECLARE @MerkmalINT INT, @WertINT INT

    SELECT @MerkmalINT = [kMerkmal]
    FROM [eazybusiness].[dbo].[tMerkmalSprache]
    WHERE cName = @cMerkmal

    SELECT @WertINT = [kMerkmalWert]
    FROM [eazybusiness].[dbo].[tMerkmalWertSprache]
    WHERE cWert = @cWert

    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)
    VALUES (@MerkmalINT, @WertINT, @kArtikel)

END
GO

EXEC CustomWorkflows._SetActionDisplayName
@actionName = 'spMerkmalSetzen',
@displayname = 'Merkmal setzen'
GO

EXEC CustomWorkflows._CheckAction @actionName = 'spMerkmalSetzen';
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: oliverk

sanja9

Aktives Mitglied
14. Juli 2021
15
7
Vielen Dank für deinen Beitrag. Ich habe die Prozedur um eine Eindeutigkeitsprüfung für die Kombination aus *kMerkmal* und *cWert* ergänzt, da sonst bei mehrfach vorkommenden gleichen Werten immer das erste Merkmal zugewiesen wurde.



Code:
ALTER PROCEDURE CustomWorkflows.spMerkmalSetzen
    @kArtikel INT,
    @cMerkmal Parameter_spMerkmaleSetzen_Merkmal,
    @cWert Parameter_spMerkmaleSetzen_Wert
AS
BEGIN
    DECLARE @MerkmalID INT;
    DECLARE @WertID INT;

    -- Prüfung: Eindeutigkeit von cMerkmal sicherstellen
    IF (SELECT COUNT(*) FROM [eazybusiness].[dbo].[tMerkmalSprache] WHERE cName = @cMerkmal) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Merkmal-ID für den angegebenen Merkmal-Namen gefunden.', 16, 1);
        RETURN;
    END

    -- Merkmal-ID ermitteln
    SELECT @MerkmalID = [kMerkmal]
    FROM [eazybusiness].[dbo].[tMerkmalSprache]
    WHERE cName = @cMerkmal;

    -- Prüfung: Eindeutigkeit der Kombination von kMerkmal und cWert sicherstellen
    IF (SELECT COUNT(*)
        FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
        JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
        WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Wert-ID für die Kombination aus Merkmal und Wert gefunden.', 16, 1);
        RETURN;
    END

    -- Wert-ID anhand der Kombination von kMerkmal und cWert ermitteln
    SELECT @WertID = mw.kMerkmalWert
    FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
    JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
    WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID;

    -- Einfügen der Werte in die Tabelle tArtikelMerkmal
    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)
    VALUES (@MerkmalID, @WertID, @kArtikel);
END;


Code:
CREATE PROCEDURE CustomWorkflows.spMerkmalSetzen
    @kArtikel INT,
    @cMerkmal Parameter_spMerkmaleSetzen_Merkmal,
    @cWert Parameter_spMerkmaleSetzen_Wert
AS
BEGIN
    DECLARE @MerkmalID INT;
    DECLARE @WertID INT;

    -- Prüfung: Eindeutigkeit von cMerkmal sicherstellen
    IF (SELECT COUNT(*) FROM [eazybusiness].[dbo].[tMerkmalSprache] WHERE cName = @cMerkmal) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Merkmal-ID für den angegebenen Merkmal-Namen gefunden.', 16, 1);
        RETURN;
    END

    -- Merkmal-ID ermitteln
    SELECT @MerkmalID = [kMerkmal]
    FROM [eazybusiness].[dbo].[tMerkmalSprache]
    WHERE cName = @cMerkmal;

    -- Prüfung: Eindeutigkeit der Kombination von kMerkmal und cWert sicherstellen
    IF (SELECT COUNT(*)
        FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
        JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
        WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Wert-ID für die Kombination aus Merkmal und Wert gefunden.', 16, 1);
        RETURN;
    END

    -- Wert-ID anhand der Kombination von kMerkmal und cWert ermitteln
    SELECT @WertID = mw.kMerkmalWert
    FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
    JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
    WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID;

    -- Einfügen der Werte in die Tabelle tArtikelMerkmal
    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)
    VALUES (@MerkmalID, @WertID, @kArtikel);
END;
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Lev1ath4n

Lev1ath4n

Neues Mitglied
5. November 2024
8
3
Vielen Dank für deinen Beitrag. Ich habe die Prozedur um eine Eindeutigkeitsprüfung für die Kombination aus *kMerkmal* und *cWert* ergänzt, da sonst bei mehrfach vorkommenden gleichen Werten immer das erste Merkmal zugewiesen wurde.



Code:
ALTER PROCEDURE CustomWorkflows.spMerkmalSetzen
    @kArtikel INT,
    @cMerkmal Parameter_spMerkmaleSetzen_Merkmal,
    @cWert Parameter_spMerkmaleSetzen_Wert
AS
BEGIN
    DECLARE @MerkmalID INT;
    DECLARE @WertID INT;

    -- Prüfung: Eindeutigkeit von cMerkmal sicherstellen
    IF (SELECT COUNT(*) FROM [eazybusiness].[dbo].[tMerkmalSprache] WHERE cName = @cMerkmal) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Merkmal-ID für den angegebenen Merkmal-Namen gefunden.', 16, 1);
        RETURN;
    END

    -- Merkmal-ID ermitteln
    SELECT @MerkmalID = [kMerkmal]
    FROM [eazybusiness].[dbo].[tMerkmalSprache]
    WHERE cName = @cMerkmal;

    -- Prüfung: Eindeutigkeit der Kombination von kMerkmal und cWert sicherstellen
    IF (SELECT COUNT(*)
        FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
        JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
        WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Wert-ID für die Kombination aus Merkmal und Wert gefunden.', 16, 1);
        RETURN;
    END

    -- Wert-ID anhand der Kombination von kMerkmal und cWert ermitteln
    SELECT @WertID = mw.kMerkmalWert
    FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
    JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
    WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID;

    -- Einfügen der Werte in die Tabelle tArtikelMerkmal
    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)
    VALUES (@MerkmalID, @WertID, @kArtikel);
END;


Code:
CREATE PROCEDURE CustomWorkflows.spMerkmalSetzen
    @kArtikel INT,
    @cMerkmal Parameter_spMerkmaleSetzen_Merkmal,
    @cWert Parameter_spMerkmaleSetzen_Wert
AS
BEGIN
    DECLARE @MerkmalID INT;
    DECLARE @WertID INT;

    -- Prüfung: Eindeutigkeit von cMerkmal sicherstellen
    IF (SELECT COUNT(*) FROM [eazybusiness].[dbo].[tMerkmalSprache] WHERE cName = @cMerkmal) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Merkmal-ID für den angegebenen Merkmal-Namen gefunden.', 16, 1);
        RETURN;
    END

    -- Merkmal-ID ermitteln
    SELECT @MerkmalID = [kMerkmal]
    FROM [eazybusiness].[dbo].[tMerkmalSprache]
    WHERE cName = @cMerkmal;

    -- Prüfung: Eindeutigkeit der Kombination von kMerkmal und cWert sicherstellen
    IF (SELECT COUNT(*)
        FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
        JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
        WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID) <> 1
    BEGIN
        RAISERROR ('Mehr als eine oder keine passende Wert-ID für die Kombination aus Merkmal und Wert gefunden.', 16, 1);
        RETURN;
    END

    -- Wert-ID anhand der Kombination von kMerkmal und cWert ermitteln
    SELECT @WertID = mw.kMerkmalWert
    FROM [eazybusiness].[dbo].[tMerkmalWertSprache] AS mw
    JOIN [eazybusiness].[dbo].[tMerkmalWert] AS m ON mw.kMerkmalWert = m.kMerkmalWert
    WHERE mw.cWert = @cWert AND m.kMerkmal = @MerkmalID;

    -- Einfügen der Werte in die Tabelle tArtikelMerkmal
    INSERT INTO dbo.tArtikelMerkmal (kMerkmal, kMerkmalWert, kArtikel)
    VALUES (@MerkmalID, @WertID, @kArtikel);
END;
Oh vielen Dank für die Verbesserung/Erweiterung meiner Prozedur. Da ich nicht so viel mit SQL am Hut habe war ich schon froh es überhaupt funktionabel hinzubekommen. So hätte ich das niemals hinbekommen, deswegen nochmal vielen Dank dafür!
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Wie Attribute/Merkmale eines Artikels abfragen? Schnittstellen Import / Export 0
Merkmale JTL-Wawi 1.9 5
Neu Merkmale als Attribute ausgeben Shopify-Connector 3
Neu Merkmale aus Globalen Angebotsvorlagen werden bei erstellen über Ameise nicht übernommen Wawi 1.10 eBay-Anbindung - Fehler und Bugs 0
Neu Merkmale werden nicht an Presta übertragen PrestaShop-Connector 2
Neu Merkmale/Artikel werden nicht mehr Abgeglichen nach Shopware Update 6.4 -> 6.5 Shopware-Connector 0
Artikel Merkmale in der Rechnung anzeigen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 13
Neu Shoprabatt - kein Rabatt auf der Rechnung vs kein Shoprabatt dafür selber an Rabatt setzen denken User helfen Usern - Fragen zu JTL-Wawi 7
Neu Wie kann man Produkte im Woocommerce über JTL auf "Entwurf" setzen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Stücklistenartikel-(Komponenten) auf verschiedene Picklisten setzen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Verwiesen an Servicepartner Worfkflow, um die UK Bestellungen über amazon auf "Rechnungserstellung extern" setzen. JTL-Workflows - Fehler und Bugs 1
In Diskussion Workflow "Auf Pickliste setzen" ohne gleich einen Lieferschein zu genereieren? JTL-Workflows - Fehler und Bugs 1
Neu Lieferschein per Workflow o.ä. von "offen" auf "Versendet" setzen bei bestimmter Versandart User helfen Usern - Fragen zu JTL-Wawi 8

Ähnliche Themen