Update Preise beim Artikel

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Antworten
Woolfi
Beiträge: 7
Registriert: Fr 4. Mai 2018, 10:52

Hallo Zusammen

ich möchte gerne aus der Datenbank aus der Tabelle ABG Einzelpreise herausholen anhand der gleichen ID und diese zusammenrechnen lassen und dann die Summe in VK Preis reinschreiben.

Ich bekomme zwar keine Fehlermeldung jedoch einen 0 Wert.

Sprich es passiert einfach nichts.

schreie um Hilfe :(

Anbei der Code:

execute block
returns (art_id do_id)
as
declare vkbrutto_neu do_waehrung;
declare vkbrutto_alt do_waehrung;

begin
for select id, art.vknetto from art where ART.ARTIKELART = '5' into :art_id, :vkbrutto_alt do
begin
select sum(ABG.GESAMTPREIS)
from ABG
where ABG.ART_ID = :art_id into :vkbrutto_neu;

if ( :vkbrutto_alt != :vkbrutto_neu ) then
begin
UPDATE ART
SET ART.VKNETTO = :vkbrutto_neu,
ART.VKBAUTEIL = :vkbrutto_neu
where ART.ID = :ART_ID;
suspend;
end
end
end
Woolfi
Beiträge: 7
Registriert: Fr 4. Mai 2018, 10:52

Moin

hab gestern noch was dazu gebastelt.

jetzt geht es, aber wenn das Feld null ist dann schreib nichts rein.

Wenn ich zuerst das Feld z.B. 1 fülle dann funkt alles.

execute block
returns (art_id do_id)
as
declare vk_neu do_waehrung;
declare vk_alt do_waehrung;
declare vkbrutto do_waehrung;
begin
for select ART.ID, ART.VKNETTO, ART.VKBRUTTO from ART where ART.ARTIKELART = '5' into :art_id, :vk_alt, :vkbrutto do
begin

select sum(ABG.GESAMTPREIS)
from ABG
where ABG.ART_ID = :art_id into :vk_neu;

if ( :vk_alt is distinct from :vk_neu ) then
begin
UPDATE ART
SET
ART.VKBAUTEIL = :vk_neu,
ART.VKNETTO = :vk_neu,
ART.VKBRUTTO = :vk_neu * 1.19
where ART.ID = :ART_ID;

suspend;
end
suspend;
end
end
Benutzeravatar
martin.koeditz
Beiträge: 440
Registriert: Sa 31. Mär 2018, 14:35

Hallo Woolfi,

in welchem Feld steht NULL?
Bitte beachte, dass bei Kalkulationen mit NULL immer NULL als Ergebnis raus kommt. Besser mit COALESCE(feldname, 0) arbeiten. Dann erhalte ich als Ergebnis zumindest einen numerischen Wert mit dem ich weiterrechnen kann.

Auch dies funktioniert nur, wenn keines der Felder NULL enthält:

Code: Alles auswählen

if ( :vkbrutto_alt != :vkbrutto_neu ) then
Gruß
Martin
Martin Köditz
it & synergy GmbH
Woolfi
Beiträge: 7
Registriert: Fr 4. Mai 2018, 10:52

Hi Martin

null steht in VKBrutto, VKNetto und VKBAUTEIL

sprich alle 3 Felder haben am Anfang null.

Beim Import der Artikel schreiben wir nun die "0" rein wie du sagtest damit zumindest ein nummerischer Wert vorhanden ist.

Die Frage ist nur mit dem 2 Code bekomme ich die VKNetto und VKBauteil gefüllt, jedoch nur der VKBrutto bleibt dann auch bei 0 stehen
Benutzeravatar
martin.koeditz
Beiträge: 440
Registriert: Sa 31. Mär 2018, 14:35

Gehen wir mal davon aus, dass dieser Code-Abschnitt aufgerufen wird.

Code: Alles auswählen

if ( :vk_alt is distinct from :vk_neu ) then
begin
UPDATE ART
SET
ART.VKBAUTEIL = :vk_neu,
ART.VKNETTO = :vk_neu,
ART.VKBRUTTO = :vk_neu * 1.19
where ART.ID = :ART_ID;
Wenn ART.VKBAUTEIL <> 0 ist, dann ist :vk_neu ebenfall ungleich 0. Und damit gilt, dass ART.VKBRUTTO ebenfalls ungleich 0 sein muss. Bitte prüfe, ob dieses UPDATE wirklich durchgeführt wird. Existieren sonst noch Trigger, die das Ergebnis beeinflussen könnten?

Gruß
Martin
Martin Köditz
it & synergy GmbH
Woolfi
Beiträge: 7
Registriert: Fr 4. Mai 2018, 10:52

Hi Martin

der VKNetto und VKBAUTEIL werden richtig berechnet, nur der VKBrutto will sich nicht anpassen lassen.
colaflasche
Beiträge: 16
Registriert: Fr 6. Mär 2020, 16:32

Hallo Woolfi,

schaue Dir dazu mal den Menüpunkt 9.1.2.7.1 an.

Viele Grüße, Jan
Benutzeravatar
martin.koeditz
Beiträge: 440
Registriert: Sa 31. Mär 2018, 14:35

Hallo colaflasche,

ist deine letzte Nachricht im richtigen Beitrag gelandet? Kann dem nicht ganz folgen.

Gruß
Martin
Martin Köditz
it & synergy GmbH
colaflasche
Beiträge: 16
Registriert: Fr 6. Mär 2020, 16:32

Ja, ist sie, der Hersteller der WaWi, die er verwendet bietet unter dem Menüpunkt genau das, was er braucht :).
bfuerchau
Beiträge: 484
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Nimm für die Berechnung

coalesce(Feld, 0)
Antworten