[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2015
    Beiträge
    22

    Question Nullwerte Problem bei UPDATE

    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

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    der Preis wird nicht gefunden, das ergibt einen null wert

    where exists(select feld from datei where --alle Bedingungen nochmal-- )
    kann helfen

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Mar 2015
    Beiträge
    22
    ...leider gleiches Ergebnis ...

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Apr 2003
    Beiträge
    195
    @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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Apr 2003
    Beiträge
    195
    @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

  8. #8
    Registriert seit
    May 2002
    Beiträge
    1.121
    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

  9. #9
    Registriert seit
    Apr 2003
    Beiträge
    195
    @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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Apr 2003
    Beiträge
    195
    @Fuerchau,

    danke, aber jetzt erhalte ich die Meldung: Ergebnis der Anweisung enthält mehr als eine Zeile

    LG
    Franz-Georg

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Die Aussage ist doch wohl eindeutig.
    Woher soll SQL denn wissen, aus welcher Zeile du denn den Update für das Feld haben willst.
    Du musst den Select schon so eingrenzen, dass er genau 1 Ergebnis bringt.
    Dazu gibts mehrere Methoden:
    select distinct ...<= ggf. unsicher, wenn mehr als 1 Wert vorkommen kann
    select min(..)... <= gibt halt den kleinsten
    select ... fetch first 1 rows only <= liefert den ersten
    Zu letzterem: ggf. hilft hier noch ein order by um den 1. zu beeinflussen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Update RDi 9.1.1.1
    By andreaspr@aon.at in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 01-12-15, 10:28
  2. Windows Problem nach Update von iAccess [gelöst]
    By JanItor in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 11-02-15, 15:13
  3. Antworten: 2
    Letzter Beitrag: 02-05-14, 08:42
  4. SQL update
    By Joe in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-04-03, 15:06
  5. SQL update
    By Joe in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 01-04-03, 19:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •