Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 17.03.2009, 10:03 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 17.03.2009
Beiträge: 5
Standard Trigger und Ergebnis mit mehreren Datensätzen

Hallo Zusammen,

ich bastel gerade an Triggern, auch an Triggern, deren Ergebnis per Email versendet wird. Dies funktioniert auch ganz gut. Jetzt stehe ich vor dem Problem, dass der Trigger den ich gerade aufbaue mehrere Datensätze bringen wird (nicht nur einen - hier funktioniert eine entsprechende Lösung gut). Beachtet bitte: Der Trigger soll funktionieren - ob er wirklich Sinn macht oder eine Herangehensweise über einen Report/Prozedur sinnvoller wäre ist egal. Mir geht es nur um das Verständnis!

Also, was ich mache ist eine Abfrage über die Datenbank, die mithilfe eines Triggers den Kundenstamm mit dem Kreditlimit der Kunden abfragt. Beispielszenario: Ein neuer Kunde wird angelegt und ein Kreditlimit im KdStamm angelegt. Ist diese Kreditlimit über einem bestimmten Wert sollen alle Kundendaten ( wie Kd-Nummer, Name, etc.) per Mail an den Chef geschickt werden.

Bisher steht folgendes:

Code:
ALTER TRIGGER Kreditlimitabfrage
ON dbo.YKUN0015
FOR INSERT,UPDATE
AS 
    
    SET NOCOUNT ON


declare @query nvarchar(max) 


SET @query = (SELECT NAME1 FROM inserted 
INNER JOIN Kreditabfrage ON dbo.inserted.NUMMER = dbo.YKUN0015.NUMMER 
WHERE CONVERT(int,KRED_LIMIT) >= 200000)


EXEC msdb..sp_send_dbmail

@recipients = 'status@mydomain.com',
@subject = 'Kunde(n) mit Kreditlimit über Max in der Datenbank',
@body = @query;
Ach ja, die Umwandlung von KRED_LIMIT ist nötig, da in der DB KRED_LIMIT decimal ist, @query aber nvarchar(max)...von mir aus kann KRED_LIMIT auch in einen anderen Datentyp konvertiert werden, dies ändert aber nichts an der Fehlermeldung unten...
Ich bekomme zwar eine positive Meldung (vom SQL Server Management Studio 2005), dass der Syntax stimmt. In dem ERP-System mit der Datenbank aber folgende Fehlermeldung:

Zitat:
20050 - Microsoft SQL Server:208[Microsoft][ODBC SQL Server Driver][SQL Server]Ungültiger Objektname 'Kreditabfrage'..
Rest ist abgeschnitten...

Kann mir jemand helfen?

Geändert von pyromelana (17.03.2009 um 10:12 Uhr)
pyromelana ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.03.2009, 10:39 Nach oben    #2
Neuer Benutzer
 
Registriert seit: 17.03.2009
Beiträge: 5
Standard

mmh, ok, ich hab den Fehler. Ohne Murren macht die Datenbank den Job, wenn der code so aussieht:

Code:
ALTER TRIGGER Kreditlimitabfrage
ON dbo.YKUN0015
FOR INSERT,UPDATE
AS 
    
    SET NOCOUNT ON

declare @query nvarchar(max)

SET @query = (SELECT i.NAME1 FROM inserted as i
INNER JOIN YKUN0015 as k ON i.NUMMER = k.NUMMER
WHERE CONVERT(int,k.KRED_LIMIT) >= 200000)

EXEC msdb..sp_send_dbmail

@recipients = 'status@mydomain.com',
@subject = 'Kunde(n) mit Kreditlimit über Max in der Datenbank',
@body = @query;
Fettgedruckt ist das, was vorher falsch war. Nur: ich bekomm nicht alle Datensätze, die betroffen sind, sondern nur den Datensatz, den ich bearbeitet habe... toll, voll am gewünschten Ergebnis vorbei geschossen. Und wenn ich beim SELECT

Code:
SELECT i.Name1, i.Straße, i.Ort ....
dazufüge, gibt es wieder die dämliche Fehlermeldung

Code:
Meldung 116, Ebene 16, Status 1, Prozedur Kreditlimitabfrage, Zeile 14
Nur ein einziger Ausdruck kann in der Auswahlliste angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeleitet wird.
Ich dachte, dass sich dies mit dem JOIN im Trigger erledigt hat... so hatte ich das jedenfalls verstanden... Hat einer ne Idee?

Geändert von pyromelana (17.03.2009 um 13:01 Uhr)
pyromelana ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47