View Full Version : Embedded-SQL: Problem mit Datumsfeldern
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
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
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.ä.
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.ä.
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
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
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, 19:32
Ich versteh nur Bahnhof :D
kuempi von stein
02-02-05, 09: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.