Stefan Bechtold: SQL-Update-Problem

Beitrag lesen

!#BLOCK(T_KUNDENSTAMM);   // öffnet die Tabelle
!#WHERE(K_G_VORNAME=T);   // sucht alle Zeilen mit T bei K_G_VORNAME
!#ORDERBY(K_DATUM_ERSTELLT_INT_DESC);  // sortiert
!#LOOP;  /schleift
@@VALUE=!#CALC(!#DATE(ident|now);-!#K_DATUM_ERSTELLT_INT;);@;   // legt variable fest

!#IF(!#VALUE;>=134);!#IF(!#K_POPPWD;=3 Tage nach X);  // eine der if-bedingungen
  !#K_MAILADRESSE; wird definitiv gelöscht<br>

!#SENDMAIL(Aliasmail-Adresse !#K_MAILADRESSE;|Philipp_Tavra@gmx.de);
TEXT
  !#ENDSENDMAIL;

!#UPDATEBLOCK(T_KUNDENSTAMM);
    !#SET(K_POPPWD=14 Tage nach X);
    !#WHERE(K_MAILADRESSE=!#K_MAILADRESSE;);
  !#ENDUPDATEBLOCK;

!#ENDIF;!#ENDIF;
......
!#ENDLOOP;
!#ENDBLOCK;

Ah ja, ich glaube dein Problem ist es, weil du in den Datensaetzen, dir du durch die WHERE Clause oben erhalten hast, nochmals ein Update machst. Sprich du fuehrst ein UPDATE auf eine Menge aus, die vorher dezimiert wurde, also quasi (und ich hoffe ich hab das Ding nicht falsch gelesen):

UPDATE (SELECT * FROM T_KUNDENSTAMM WHERE K_G_VORNAME=T ORDER BY=K_DATUM_ERSTELLT DESC) SET K_POPPWD='14 Tage nach X' WHERE K_MAILADRESSE=!#K_MAILADRESSE;

das geht natuerlich so nicht =:o)

Deine QUERY sollte so lauten:
UPDATE T_KUNDESTAMM SET K_POPPWD='14 Tage nach X' WHERE K_MAILADRESSE=!#K_MAILADRESSE AND K_G_VORNAME=T

bei einer Update darf man keine Teilmengen angeben, soweit ich weiss.
Also immer auf die ganze Tabelle beziehen.

PS: Mit QUERY meinte ich eigentlich ein SQL Skript ;o)