Hallo,
ich sitze jetzt seit 3 Stunden und das Ding funktioniert immer noch nicht. Ich bekomme permanent die Meldung dass bereits ein Cursor mit dem Namen existiert.
Getestet habe ich das Ding indem ich den Rumpf rausgenommen habe und da ging es.
Es wäre sehr nett wenn mal jemand drüberschauen könnte.
Danke
ich sitze jetzt seit 3 Stunden und das Ding funktioniert immer noch nicht. Ich bekomme permanent die Meldung dass bereits ein Cursor mit dem Namen existiert.
Getestet habe ich das Ding indem ich den Rumpf rausgenommen habe und da ging es.
Code:
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER Trigger [dbo].[AngebotAuftrag] ON [dbo].[Angebot] AFTER INSERT,UPDATE AS -- Variablen deklarieren DECLARE @BestelllisteID UNIQUEIDENTIFIER, @DistributorID UNIQUEIDENTIFIER, @id UNIQUEIDENTIFIER, @ArtikelID UNIQUEIDENTIFIER, @VorgangID UNIQUEIDENTIFIER, @Menge NUMERIC(5,2), @VK NUMERIC(7,2), @EK NUMERIC(7,2), @Marge NUMERIC(5,2), @email VARCHAR(512), @KundenID UNIQUEIDENTIFIER, @Liefertermin DATETIME DECLARE Angebot_Art CURSOR FOR SELECT A.Artikelnummer, A.Menge, A.VK_Preis FROM Angebot_Artikel A JOIN Angebot B ON B.id = A.Angebotnummer WHERE A.Angebotnummer = (SELECT id FROM Inserted) IF EXISTS(SELECT angenommen FROM INSERTED WHERE angenommen = 'True') BEGIN -- bestelle alle noch nicht bestellten Artikel OPEN Angebot_Art FETCH FIRST FROM Angebot_Art INTO @ArtikelID, @Menge, @VK PRINT @ArtikelID WHILE @@FETCH_STATUS = 0 BEGIN -- wenn ArtikelID auf Bestellliste --> nicht genug da, also Bestellvorschlagmenge um @Menge vergrößern! IF EXISTS(Select ArtikelID FROM Bestellliste WHERE ArtikelID = @ArtikelID) BEGIN PRINT 'Artikel auf Bestellliste' -- Menge hinzufügen UPDATE Bestellliste SET Menge = ((SELECT Menge FROM Bestellliste WHERE ArtikelID = @ArtikelID)+@Menge) WHERE ArtikelID = @ArtikelID END ELSE BEGIN -- sonst schaue im Artikel nach ob nicht genug auf lager sind bzw. Bestellung nicht ausreicht IF @Menge > (SELECT (Bestand+Bestellt) FROM Artikel WHERE id= @ArtikelID) BEGIN PRINT 'weniger da als benötigt' SELECT @EK = EK_Preis, @VK = VK_Preis, @Menge = (Bestand+Bestellt)-(Minimum+@Menge) FROM Artikel WHERE id = @ArtikelID INSERT INTO Bestellliste (ArtikelID, Menge, VK, EK, Datum) VALUES (@ArtikelID ,@Menge*(-1), @VK, @EK ,GETDATE()) END -- sonst tue Nichts END -- wenn Menge verändert wurde so trage Menge um FETCH NEXT FROM Angebot_Art INTO @ArtikelID, @Menge, @VK END CLOSE Angebot_Art DEALLOCATE Angebot_Art SELECT @id = id, @VorgangID = VorgangID, @KundenID = KundenID FROM ANgebot where id = '5CA9D67C-7B47-4A67-8DD9-D89485A7ADCA' SELECT @Liefertermin = DATEADD(week,3,GETDATE()) INSERT INTO Auftrag(id,VorgangID,Datum,Liefertermin,KundenID) VALUES (@id,@VorgangID,GETDATE(),@Liefertermin,@KundenID) --in Tabelle Auftrag_Artikel einfügen INSERT INTO Auftrag_Artikel (id,AuftragID,ArtikelID,VK_Preis,EK_Preis,Marge,Menge) SELECT id,Angebotnummer,Artikelnummer,EK_Preis,VK_Preis,Marge,Menge FROM Angebot_Artikel WHERE angebotnummer = @id END
Danke
Comment