[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2004
    Beiträge
    69

    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

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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

    Zitat Zitat von zannaleer
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.ä.
    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

  4. #4
    Registriert seit
    Jun 2004
    Beiträge
    69
    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


    Zitat Zitat von Fuerchau
    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.ä.

  5. #5
    Registriert seit
    Jun 2004
    Beiträge
    69
    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


    Zitat Zitat von zannaleer
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Datums-Felder in SQL

    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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

    Zitat Zitat von B.Hauser
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Unregistriert Besucher/Guest

    LOL

    Ich versteh nur Bahnhof

  9. #9
    Registriert seit
    Aug 2004
    Beiträge
    923

    bahnhof

    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.

Similar Threads

  1. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 12:01
  2. Cobol-Programm mit Embedded SQL (SELECT CASE)
    By klausgkv in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 08-06-06, 13:47
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. Character verbinden in Embedded SQL
    By e_sichert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-05-06, 10:47
  5. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38

Berechtigungen

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