Anmelden

View Full Version : Nullwerte Problem bei UPDATE



Seiten : [1] 2

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

Robi
10-03-16, 13:50
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 ...

Fuerchau
10-03-16, 14:11
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

Fuerchau
12-04-16, 09:46
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

malzusrex
12-04-16, 10:01
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

Fuerchau
12-04-16, 11:10
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.