Anmelden

View Full Version : ODBC Zugriff über Access Null-Values



Bernd Wiezroek
27-04-06, 08:58
Ich habe in Access eine AS400 Tabelle verknüpft. Immer wenn ich versuche ein Feld zu löschen kommt die Fehlermeldung das ich der Variablen einen Nullwert zuweise.

Ich weiss das ich unter V5R3 Nullwerte zulassen kan aber irgendwie scheint das nicht zu klappen.

Kann ich mit RPG3 noch auf eine Datei zugreifen die Nullwerte enthält?

JonnyRico
27-04-06, 09:04
Moin,

das solltest du mit RPG können. Wenn es sich um eine DDS beschriebene Datei handelt muss das Schlüsselwort ALWNULL angegeben werden, damit zu Nullwerte schreiben kannst.
In Access kommt eine solche Meldung aber auch ab und an wenn man Tabelle einbindet und keinen Key zuweist.

Gruß

Sascha

Bernd Wiezroek
27-04-06, 09:10
Die Tabelle hat einen Schlüssel ist aber nicht uniqe. Der Schlüssel wird auch in der entwurfsansicht angezeigt.

Ich werde das mal mit einer anderen Datei testen.

B.Hauser
27-04-06, 09:28
Kann ich mit RPG3 noch auf eine Datei zugreifen die Nullwerte enthält?


Ja, aber dazu muss beim Compilieren die OPTION ALWNULL auf *YES gesetzt werden. (Unterlassungs-Wert ist *NO)

Gleiches gilt auch bei RPGIV-Programmen.
(Alternativ kann in RPGIV-Programmen das Schlüssel-Wort ALWNULL in den H-Bestimmungen angegeben werden. Damit braucht man sich beim nächsten Compilieren nicht mehr daran zu erinnern, dass die Option gesetzt wurde.)

Mit embedded SQL können NULL-Werte immer verarbeitet werden (unabhängig davon ob RPGIII oder RPGIV verwendet wird). Die NULL-Werte müssen lediglich durch einen Indikator geprüft und gesetzt werden.

Birgitta

Fuerchau
27-04-06, 11:09
Das Problem von ACCESS ist, dass für ein Feld tatsächlich NULL geschrieben werden will, wenn man den Inhalt entfernt.
Wenn die AS/400-DB dies aber nicht hat (z.B. Standard-Anwendung), musst du das Feld aus ACCESS mit Leerzeichen bzw. 0 überschreiben !

Bernd Wiezroek
27-04-06, 12:13
Danke für die schnelle Hilfe.

Ich habe inzwischen die Ratschläge umgesetzt. Wenn ich die Datei Unique definiere und ALWNULL einsetze gibt es bei der Accesverarbeitung keine Probleme mehr.

Das Sytem wollte in den Feldern auch keine Blanks annehmen so musste immer ein Buchstabe als Dummy eingetragen werden sobald das Feld im Access geändert wurde.

Auf der RPG seite klappt der Test noch nicht richtig da kommt immer ein 5029 Fehler sobald ich versuche die Datei zu lesen. Da muß ich nochmal die Konsistez der Daten untersuchen.

Fuerchau
27-04-06, 13:00
NULL-Felder kannst du nur mit RPGLE verarbeiten.
Mit %NULLIND(Variable) kannst du dann den Zustand abfragen bzw. setzen.

Bernd Wiezroek
27-04-06, 13:14
Danke für den Tipp dann werde ich es damit versuchen.

Zur not muß ich halt mit SQL alle Null-Values initialisieren.

Fuerchau
27-04-06, 14:26
Selbst dann klappts nicht mir RPG !
Bei solchen Dateien empfielt sich dann doch wieder besser embedded SQL.
Dann kannst du NULL auch per Indicator-Variable setzen/lesen.

/exec-sql
c+ select fld1, fld2
c+ into : fld1 : flag1, :fld2 : flag2
c+ from myfile
c+ where key=: mykey
c/end exec

Die Flag-Variablen müssen als 2-Byte binär (Type B) definiert sein und enthalten -1 im Falle von NULL.

Bernd Wiezroek
27-04-06, 15:47
Da habe ich jetzt 2 Alternativen.:)

Die Sql Lösung gefällt mir besser da ich mehr SQL nutze als Free RPG.

Vielen Dank für die Hilfe.