PDA

View Full Version : Embedded-SQL: Problem mit Datumsfeldern



zannaleer
24-06-04, 11:56
Hallo Forum,

ich versuche mich gerade an embedded-sql und bekomme den SQL-Errorcode -181.
Ich habe schon festgestellt, dass es sich um ein Problem mit Datumsfeldern handelt.

Das Problem ist, dass in der Datei, auf die ich zugreife Felder mit dem Datentyp Datum vorkommen. Einige Datumsfelder sind nicht belegt, was dazu führt, dass mir der interaktive SQL diese Felder mit '++++++++++' anzeigt, damit kommt Embedded-SQL wohl nicht klar.

Was kann ich tun?

Vielen Dank.

Mit freundlichen Grüßen
Alexander

BenderD
24-06-04, 12:40
Hallo Alexander,

das liegt am Datumsforat und dem daraus resultierenden Wertebereich, versuchs mal mit *ISO (kann man in der H Karte ablochen)

mfg

Dieter Bender


Hallo Forum,

ich versuche mich gerade an embedded-sql und bekomme den SQL-Errorcode -181.
Ich habe schon festgestellt, dass es sich um ein Problem mit Datumsfeldern handelt.

Das Problem ist, dass in der Datei, auf die ich zugreife Felder mit dem Datentyp Datum vorkommen. Einige Datumsfelder sind nicht belegt, was dazu führt, dass mir der interaktive SQL diese Felder mit '++++++++++' anzeigt, damit kommt Embedded-SQL wohl nicht klar.

Was kann ich tun?

Vielen Dank.

Mit freundlichen Grüßen
Alexander

Fuerchau
24-06-04, 12:50
Nun, bei '+++' handelt sich um ein Umsetzungsproblem, was der Query halt umgeht der SQL aber nur bei Indicator erlaubt. Wenn ein Datum nicht belegt ist, müsste es NULL sein was mit "-" angezeigt würde.

In der H-Bestimmung "datfmt(*iso)", Datum-Felder als 10-Stellig alpha oder Typ "D", zusätzlich einen Indicator (binär 2 byte) beim Fetch:

fetch mycursor into :field1, :field2, ..., :datefield :dateind, ...

Man beachte, der Indicator wird ohne Komma hinter das Zielfeld gestellt.
Wert Indicator:
0 = Inhalt OK
-1 = NULL
-2 = Umsetzungsfehler, abgeschnitten o.ä.

zannaleer
24-06-04, 13:15
Hallo,

ich mache einen Fetch auf eine Datenstruktur mit Mehrfachvorkommen, in der ich die Datumsfelder als 10A definiert habe.
In der H-Bestimmung steht datfmt(*iso).

Wenn der Fetch ausgeführt wird, bekomme ich trotzdem den SqlCode = -181 zurückgeliefert.

Was mache ich falsch?

Gruß
Alexander



Nun, bei '+++' handelt sich um ein Umsetzungsproblem, was der Query halt umgeht der SQL aber nur bei Indicator erlaubt. Wenn ein Datum nicht belegt ist, müsste es NULL sein was mit "-" angezeigt würde.

In der H-Bestimmung "datfmt(*iso)", Datum-Felder als 10-Stellig alpha oder Typ "D", zusätzlich einen Indicator (binär 2 byte) beim Fetch:

fetch mycursor into :field1, :field2, ..., :datefield :dateind, ...

Man beachte, der Indicator wird ohne Komma hinter das Zielfeld gestellt.
Wert Indicator:
0 = Inhalt OK
-1 = NULL
-2 = Umsetzungsfehler, abgeschnitten o.ä.

zannaleer
24-06-04, 14:08
Hallo,

ich habe meinen Fehler gefunden. Ich muss beim Wandeln angeben, in welchem Format die Datumsfelder vorliegen. Wenn ich dort *iso angebe, klappt es problemlos.

Vielen Dank für die schnellen Antworten.

Gruß
Alexander



Hallo,

ich mache einen Fetch auf eine Datenstruktur mit Mehrfachvorkommen, in der ich die Datumsfelder als 10A definiert habe.
In der H-Bestimmung steht datfmt(*iso).

Wenn der Fetch ausgeführt wird, bekomme ich trotzdem den SqlCode = -181 zurückgeliefert.

Was mache ich falsch?

Gruß
Alexander

B.Hauser
24-06-04, 14:20
Hallo,

SQL interessiert nicht was in den H- oder D-Bestimmungen definiert ist.
Eine Möglichkeit ist, das Datums-Format beim Umwandeln anzugeben. Das Problem dabei ist, dass man es beim nächsten Wandeln wahrscheinlich vergessen hat.

Es gibt eine elegantere Lösung, die analog zu den H-Bestimmgungen gesehen werden kann.
Über das SQL-Statement SET OPTION können die Einstellungen, die beim Umwandeln angegeben werden können, direkt im Programm hinterlegt werden:

C/Exec SQL
C+ Set Option Commit = *NONE, DatFmt = *ISO, CloSQLCsr = *ENDMOD
C/End-Exec

Birgitta

BenderD
25-06-04, 09:53
Hallo,

das mit den H Bestimmungen und SQL ist natürlich richtig, ist mir in der Schnelle durchgerutscht, man minimiert natürlich die Zeit, die man in Foren verbringt, von wegen Geld verdienen und so....

Noch eine Bemerkung zum umwandeln: es ist bei ILE natürlich ein durchgängiges Problem reproduzierbar Objekte zu erstellen mit Option 14 aus PDM ist es da selten getan. HIer empfiehlt sich schon der Einsatz von Change Management Software oder zumindest CLs zum wandeln.
Etwas dazwischen liegt, die Create Befehle in Kommentare der Quellen einzubetten und dann einen kleinen Pre Prozessor, der das automatisch ausführt. Kann man sich von meiner Freeware Page runterladen, wenn man will.

mfg

Dieter Bender


Hallo,

SQL interessiert nicht was in den H- oder D-Bestimmungen definiert ist.
Eine Möglichkeit ist, das Datums-Format beim Umwandeln anzugeben. Das Problem dabei ist, dass man es beim nächsten Wandeln wahrscheinlich vergessen hat.

Es gibt eine elegantere Lösung, die analog zu den H-Bestimmgungen gesehen werden kann.
Über das SQL-Statement SET OPTION können die Einstellungen, die beim Umwandeln angegeben werden können, direkt im Programm hinterlegt werden:

C/Exec SQL
C+ Set Option Commit = *NONE, DatFmt = *ISO, CloSQLCsr = *ENDMOD
C/End-Exec

Birgitta

Unregistriert
01-02-05, 20:32
Ich versteh nur Bahnhof :D

kuempi von stein
02-02-05, 10:51
was gibts denn da nicht zu verstehen?
ist doch grundschule sozusagen.
wenn alle hier so ausführlich erklären würden wie
britta fürchau und bender dann gäbs ja fast keine probleme mehr.

wünschte mir manchmal ich wäre früher auf dieses forum hier gestossen...

have a nice day

k.