Zitat von
Sven Janssen:
Ne moment. Mein Programm soll darauf gar keine Berücksichtigung finden.
So solls auch sein.
Zitat von
Sven Janssen:
Dadurch soll entschieden werden ob ein insert oder update ausgeführt werden soll.
Der Ansatz ist richtig, aber der Denkfehler ist der, daß du versuchst die Anzahl der Records zu ermitteln, anstatt ob gerade der betreffende Record schon da ist ! Dabei spielen jetzt allerdings die IDs eine entscheidende Rolle.
Sofern jeder DS eine eindeutige Nr. hat, dann brauchst Du nur...
Beispiel ist besser:
SQL-Code:
CREATE PROCEDURE PREISSP (
ID_KUNDE INTEGER,
VP DECIMAL(15,2),
ID_ART INTEGER)
AS
DECLARE VARIABLE AENDERN INTEGER;
begin
AENDERN = -1;
select ID from PREIS where (ID_KUNDE= :ID_KUNDE) and
(ID_ART= :ID_ART)
into :AENDERN;
if (AENDERN < 0) then begin
insert into PREIS (ID_KUNDE,ID_ART,VP)
values (:ID_KUNDE,:ID_ART,:VP);
end
else begin
update PREIS set VP=:VP
where (ID_ART= :ID_ART) and (ID_KUNDE= :ID_KUNDE);
end
suspend;
end
Es geht um eine Kunden-Preistable. Hat ein Kunde für einen Artikel einen Preis, so ist die ID <> 0 => Update. Ist keiner da, dann bleibt Aendern auf -1 stehen und es wird ein Insert gemacht. Bingo !