View Full Version : Nullwerte Problem bei UPDATE
sonicreducer
10-03-16, 13:39
Hallo,
bin schon etwas am verzweifeln dies hier ergibt immer:
[Nullwerte für Spalte oder Variable VAPREN nicht zulässig]
UPDATE VAVARI set VAPREA = VAPREN, VADLA = 20160310,
VAULAE = 'USER', VAPREN =
(select PREIS from
STAMM where VAARTN = STARTN and VAVAR = STVAR)
Where VAARTN in(select STARTN from STAMM where
VAARTN = STARTN and VAVAR = STVAR)
Kann mir jemand weiterhelfen ?
LG
der Preis wird nicht gefunden, das ergibt einen null wert
where exists(select feld from datei where --alle Bedingungen nochmal-- )
kann helfen
Robi
sonicreducer
10-03-16, 13:55
...leider gleiches Ergebnis ...
Dann ist das Quellfeld wohl NULL und dein Zielfeld erlaubt keine NULL.
Mit "coalesce(Preis, 0)" oder "coalesce('Subselect...', 0)" kannst du das lösen.
FNeurieser
12-04-16, 09:42
@Fuerchau,
Hallo, habe anscheinend dasselbe Problem und versucht es wie beschrieben zu lösen, komme aber noch immer auf keinen grünen Zweig. Hier die Meldung sowie das Statement:
Nullwerte für Spalte oder Variable DLINTBEL nicht zulässig.
update rwlex998/wkf098p a set a.dlintbel =
(select coalesce(b.rhdrgnr, 0) from
testfgn/stgl006_98 b where
a.dldokid = b.dldokid and a.dlstatus = 'ARCHIV'
and a.dlintbel = 0 and b.rhdrgnr <> 0)
Kann mir geholfen werden?
Danke jedenfalls schon mal.
LG
Franz-Georg
Aber immer doch.
Ein "(select coalesce()...)" bringt nur dann etwas, wenn der Satz gefunden wird und der Feldinhalt NULL ist.
Ein "coalesce((select ...), 0)" bringt dann etwas, wenn der Select selber als Ergebnis NULL bringt.
Dabei ist es nun unabhängig ob kein Satz da ist oder der Feldinhalt als Ergbnis NULL bringt.
FNeurieser
12-04-16, 09:57
@Fuerchau,
jetzt steh ich glaub ich im sprichwörtlichen Wald und sehe ihn vor lauter Bäumen nicht mehr :-)
Ich müsste jetzt also ein coalesce((select...,0) setzen, aber was schreibe ich hinter das select?
LG
Franz-Georg
update rwlex998/wkf098p a set a.dlintbel =
(coalesce(select b.rhdrgnr from
testfgn/stgl006_98 b where
a.dldokid = b.dldokid and a.dlstatus = 'ARCHIV'
and a.dlintbel = 0 and b.rhdrgnr <> 0), 0)
so sollte es gehen
Gruß
Ronald
FNeurieser
12-04-16, 10:22
@Ronald
danke, aber jetzt bekomme ich natürlich die Meldung dass das Token B ungültig ist - bezogen auf b.rhdrgnr da diese Def. erst später kommt nehme ich mal an?
LG
Franz-Georg
Ein kleiner Klammerfehler:
update rwlex998/wkf098p a set a.dlintbel =
coalesce((select b.rhdrgnr from
testfgn/stgl006_98 b where
a.dldokid = b.dldokid and a.dlstatus = 'ARCHIV'
and a.dlintbel = 0 and b.rhdrgnr <> 0), 0)
Hier wurde der scalare Subselect nicht erkannt, da dieser immer in Klammern stehen muss.