PDA

View Full Version : Probleme mit einem Update auf der I-Series



Salutaris
19-05-09, 06:40
Hallo zusammen,

ich habe hier ein Problem und vielleicht könnt ihr mir hier helfen.

Ich habe eine Datei xxa00. Dies ist die Datei, in der der aktuelle Kundenstamm steht. Ich möchte nun bestimmten Kunden ein Kennzeichen geben.

Diese Kunden stehen in der der Datei qrkustak. Das Kennzeichen, das sie bekommen sollen, steht dort in dem Feld kansch.

Daher habe ich mir folgendes Update ausgedacht.

update xxa00 as a
set xares8=
(select kansch from qrkustak as b
where b.kdnr=a.xakdnr and a.xakzrs=0)

Zur Erläuterung:

in der where-Bedingung vergleiche in die Kundennummern aus beiden Dateien. Das Feld xakzrs in der xxa00 ist ein Kennzeichen, um welche Art von Adresse es sich handelt. In dieser Datei können mehrere Sätze pro Kunde gespeichert sein, aber es sollen nur die upgedatet werden, die eben eine 0 enthalten.

Aber es funktioniert nicht. Es kommt immer wieder die Meldung:
Nullwerte für Spalte oder Variable XARES8 nicht zulässig.

Heißt das, ich hätte keinen Inner Join gemacht?

Kann mir da jemand helfen?

Grüße
daniel

Allrounder
19-05-09, 07:09
Probier mal:



update xxa00 a set xares8 =

(select kansch from qrkustak b
where b.kdnr=a.xakdnr)

where exists

(select * from qrkustak c
where c.kdnr=a.xakdnr)

and a.xakzrs=0

Salutaris
19-05-09, 07:45
Hallo,

das ging ja flott.

Den Befehl habe ich ausprobiert. Er läuft zwar an, es kommt aber die Meldung:

Fehler bei Datenumsetzung oder beim Zuordnen von Daten.

Aber wozu eigentlich das exists? Diese Abfrage mache ich doch schon vorher im ersten Select?

Grüße
Daniel

Fuerchau
19-05-09, 08:05
Mit dem 1. Select suchst du nur den Satz der passend zum zu ändernden Satz ist.
Wenn keiner da ist, liefert dieser Select NULL.
Der 2. Select schränkt daher den Update auf die Sätze ein, die in der 2. Datei vorhanden sind.

Der Umsetzungsfehler resultiert aus unterschiedlicher Definition der Felder xares8 und kansch.
Hier musst du ggf. per cast den typ anpassen.