[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2010
    Beiträge
    3

    SELECT auf eine Datei mit Timestamp-Feldern

    Hallo Forum,

    ich möchte über eine SELECT-Anweisung (Embedded SQL in ILE RPG) einen Datensatz in eine Datenstruktur einlesen.

    Der Datensatz enthält zwei Timestamp-Felder. Nun bekomme ich mit der Anweisung SELECT * INTO :Struktur... die Inhalte aller Felder in die Datenstruktur, bis auf die der Timestamp-Felder.

    Weiss jemand warum oder noch besser wie man die Information in die Datenstruktur bekommt?

    Danke und Gruß,
    pb400

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... indem man es richtig macht, was du falsch machst, kann man hier nur raten, weil man nicht sieht was du machst!!!

    Zitat Zitat von pb400 Beitrag anzeigen
    Hallo Forum,

    ich möchte über eine SELECT-Anweisung (Embedded SQL in ILE RPG) einen Datensatz in eine Datenstruktur einlesen.

    Der Datensatz enthält zwei Timestamp-Felder. Nun bekomme ich mit der Anweisung SELECT * INTO :Struktur... die Inhalte aller Felder in die Datenstruktur, bis auf die der Timestamp-Felder.

    Weiss jemand warum oder noch besser wie man die Information in die Datenstruktur bekommt?

    Danke und Gruß,
    pb400
    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
    Apr 2010
    Beiträge
    3
    Hallo BenderD,

    ich habe das folgendermassen versucht:
    exec sql
    SELECT *
    INTO :Out_Struktur
    FROM DB_FILE
    WHERE...

    wobei Out_Struktur so definiert ist:
    D Out_Struktur E DS ExtName(DB_FILE) Prefix(Out_)

    Wenn ich die Feldnamen explizit angebe, also so:
    SELECT CRTDAT
    INTO :Out_CrtDat
    FROM DB_FILE
    WHERE...
    bekomme ich den Wert des Timestamps in Out_CrtDat. (CRTDAT ist als Timestamp definiert)

    Wenn ich aber über Select * alle Felder der Datei haben will, ist das Feld Out_CrtDat nicht gefült.

    Gruß,
    pb400

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Arbeitest du zufällig mit V6R1? Und ist das Timestamp-Feld zufällig als Hidden-Field definiert?

    Wenn ja, dann versuch mal ein Select All * From ...

  5. #5
    Registriert seit
    Apr 2010
    Beiträge
    3
    Ja, wir arbeiten mit V6R1. SELECT ALL * hat leider auch nicht geholfen. Trotzdem Danke!

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... wenn das Feld in der DS enthalten ist (sieht man in der Umwandlungsliste) und keine SQL Warnings zurück kommen (sieht man am einfachsten im debug im Job) würde ich da mal nach dem PTF Stand sehen und defect problem an IBM reporten.

    D*B

    Zitat Zitat von pb400 Beitrag anzeigen
    Hallo BenderD,

    ich habe das folgendermassen versucht:
    exec sql
    SELECT *
    INTO :Out_Struktur
    FROM DB_FILE
    WHERE...

    wobei Out_Struktur so definiert ist:
    D Out_Struktur E DS ExtName(DB_FILE) Prefix(Out_)

    Wenn ich die Feldnamen explizit angebe, also so:
    SELECT CRTDAT
    INTO :Out_CrtDat
    FROM DB_FILE
    WHERE...
    bekomme ich den Wert des Timestamps in Out_CrtDat. (CRTDAT ist als Timestamp definiert)

    Wenn ich aber über Select * alle Felder der Datei haben will, ist das Feld Out_CrtDat nicht gefült.

    Gruß,
    pb400
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Ich denke das ist ein Bug und sollte gemeldet werden.
    Ich bin in den letzten Tagen in ein ähnliches Problem gelaufen. Timestamp-Felder in einer Datenstruktur wurden beim Fetch nicht gefüllt, während alle anderen Werte (auch von echten Datums- und Zeitfeldern) korrekt gefüllt waren.

    Auf die Schnelle blieb mir nichts anderes übrig, als den Datensatz nochmals zu Fuss klassisch zu CHAINEN.

    @Andreas
    Wenn ja, dann versuch mal ein Select All * From ...
    Hatten wir doch schon mal! Anderes Forum, anderer Ort.

    Beim SELECT ALL werden alle Zeilen angezeigt, im Gegensatz zu SELECT DISTINCT, bei dem Duplikate nur einmalig angezeigt werden. SELECT ALL hat allerdings keinen Einfluß auf etwaige hidden Felder, die bleiben weiterhin unsichtbar.

    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

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... das all in der select Klausel ist ein reines Füllwort und kann weggelassen werden, will man die Doubletten nicht haben, muss distinct angegeben werden.

    Beim union gibt es das Schlüsselwortpärchen auch, da ist es umgekehrt, da ist distinct default und kann weggelassen werden und all muss angegeben werden (select... union all...select...), wenn man die Doubletten haben will.

    D*B

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Beim SELECT ALL werden alle Zeilen angezeigt, im Gegensatz zu SELECT DISTINCT, bei dem Duplikate nur einmalig angezeigt werden. SELECT ALL hat allerdings keinen Einfluß auf etwaige hidden Felder, die bleiben weiterhin unsichtbar.

    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/

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nunja, das liegt an ggf. abweichender Definition zwischen RPG und SQL.
    Ich habe das noch mal getestet und mit folgender Einstellung auf V5R4 klappt's problemlos:

    h datfmt(*iso) timfmt(*hms)

    exec sql set option datfmt=*iso, timfmt=*hms;

    Dann kommen auch korrekt die Timestamps.
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Timestamps haben nur ein einziges Format, nämlich *ISO und da gibt es auch keine Unterschiede zwischen RPG und SQL. (Auch wenn SQL neben dem ISO-Format auch das ANSI-Format erkennt.)

    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

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Und trotzdem mag der Precompiler halt nicht, wenn die Definitionen wohl unterschiedlich sind.
    Wie gesagt, ich habe es ausprobiert und bekomme den Timestamp auch mit "Select *" in die DS korrekt übergeben.

    Allerdings mag der Unterschied sein, dass ich einen Cursor verwendet habe und den Fetch verwende.
    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

Similar Threads

  1. Kein Zugriff von Linux auf AS/400 Freigabe?
    By schatte in forum NEWSboard Linux
    Antworten: 12
    Letzter Beitrag: 29-01-08, 14:02
  2. Abfrage im CL auf aktive Sätze einer Datei
    By Hubert Brethauer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 14-03-06, 09:37
  3. Antworten: 3
    Letzter Beitrag: 27-01-06, 13:25
  4. afpds funktionert nur auf IPDS-Drucker
    By danyautum in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 10-06-05, 14:14
  5. Datei binär auf PC übertragen
    By sannefinger in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-05-04, 15:19

Berechtigungen

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