[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.074

    Pest oder Cholera

    Hallo *all,
    es ist wie immer, ich muß eine Datei bearbeiten in der Datensätze mit einem Gültig bis Datum sind.
    Wenn ich eine View erstelle, komme ich schnell an die Daten, aber soweit ich weiß kann ich ja nicht die Reihenfolge der Sätze beeinflußen. Da ich dort Kunden-Nummern drin habe, müßte ich immer die komplette Datei lesen um sicher zu sein alle Sätze eines Kunden zu haben.

    Mache ich eine LF kann ich sie schlüsseln und den Satzgruppenwechsel berücksichtigen.

    Allein, ich weiß nicht wie ich dieses Konstrukt aus der View in ein LF übersetzen soll.

    and (sodnbi = 99999999
    or sodnbi >= YEAR(CURRENT DATE)*10000 +
    MONTH(CURRENT DATE)*100 +
    DAY(CURRENT DATE))

    Könnte ich eigentlich eine LF auf die View machen? Nachdem ich nochmal nachgedacht habe, fällt mir ein das eine LF immer nur von einer PF gemacht werden kann.

    GG

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Wenn Du die View mit embedded SQL verarbeitest, kannst Du eine ORDER BY-Anweisung in dem DECLARE-CURSOR-Statement angeben und damit die Datensätze in der gewünschten Reihenfolge verarbeiten.
    ... oder bestehst Du darauf die Daten mit native I/O zu verarbeiten?

    Übrigens SODNBI = 99999999 ist überflüssig, da 99999999 auf alle Fälle größer als das numerische Datum ist.

    Auf alle Fälle sollte ein Index mit SODNBI als Schlüssel-Feld haben oder vielleicht besser KUNDE/SODNDBI vorhanden sein.

    Falls Du zufällig schon auf Release 7.2 sein solltest kannst Du das numerische Datum im Format JJJJMMTT mit DEC(Current_Date, 8, 0) oder INT(Current_Date) ermitteln.

    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.074
    Danke,
    ich muss darüber nachdenken, will die Daten eigentlich mit Cobol weiterverarbeiten.

    Melde mich morgen wieder.

    PS immer noch V5R4

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    will die Daten eigentlich mit Cobol weiterverarbeiten.
    Das ist doch kein Problem, Du liest die Daten mit (embedded) SQL in eine Datenstruktur oder einzelne Host-Variablen und verarbeitest die Werte weiter mit Cobol.

    Birgitta
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    ggf hab ich das Problem noch nicht verstanden, wenn doch, dann mach ein Index
    mit Kundennr (aufsteigend) und g.ab.Datum absteigend auf die View, das geht.
    (Datum als Datum oder numerisch JJJJMMTT)
    Beim Zugriff mit 'Kunde und Datum' (setll und read) hast du immer den zu Zeitpunkt Datum gültigen Satz.
    Robi

  6. #6
    Registriert seit
    Aug 2006
    Beiträge
    2.074
    Hallo,
    die Original-Datei hat über 300.000 Datensätze. Mich interessieren aber nur die Datensätze die Gültigkeitsdatum >= dem Tagesdatum bzw. den Wert 99999999 (immer gültig) haben.
    Aufbau:

    Kunden-Nummer Artikel-Nummer Preis Datum
    1081_________ 123 __________0,70 14.12.2014
    1081_________ 124__________ 0,99 15.12.2014
    1081_________ 124__________ 1,05 10.12.2014

    Mit der View habe ich halt den Vorteil immer nur aktuelle Sätze zu haben, mit der LF kann ich zwar auf den Kunden positionieren. Muß mir aber merken welchen Artikel ich gerade hatte und alle Datensätze die vom selben Artikel aber jüngeren Datums sind überlesen.

    Da finde ich die View einfach schöner.

    Mit embedded SQL in Cobol muß ich mal schauen. Ganz bestimmt eine tolle Sache wenn es mal läuft, aber bis dahin gibt es doch den ein oder anderen Stolperstein....

    GG

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    Ok, verstanden,
    Dann zu deiner ursprünglichen Frage:
    Ja, du kannst einen Index auf die View legen oder die View im SQL mit order by lesen --> Birgitta's Antwort
    SQL verwendet dann alles an LF/INdex was er gebrauchen kann oder sortiert selber.

    (meine Cobol Zeit ist gefühlte 100 Jahre her, aber ich denke einen Index kannst du auch im Cobol 'native' verarbeiten)
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von KingofKning Beitrag anzeigen
    Hallo,
    die Original-Datei hat über 300.000 Datensätze. Mich interessieren aber nur die Datensätze die Gültigkeitsdatum >= dem Tagesdatum bzw. den Wert 99999999 (immer gültig) haben.
    Aufbau:

    Kunden-Nummer Artikel-Nummer Preis Datum
    1081_________ 123 __________0,70 14.12.2014
    1081_________ 124__________ 0,99 15.12.2014
    1081_________ 124__________ 1,05 10.12.2014

    Mit der View habe ich halt den Vorteil immer nur aktuelle Sätze zu haben, mit der LF kann ich zwar auf den Kunden positionieren. Muß mir aber merken welchen Artikel ich gerade hatte und alle Datensätze die vom selben Artikel aber jüngeren Datums sind überlesen.

    Da finde ich die View einfach schöner.

    Mit embedded SQL in Cobol muß ich mal schauen. Ganz bestimmt eine tolle Sache wenn es mal läuft, aber bis dahin gibt es doch den ein oder anderen Stolperstein....

    GG
    ... selbst das geht mit einer DDS LF, Denormalisierung ist das Zauberwort; Du brauchst doch nur eine Datei mit einem Satz, wo Du um 0:00 Uhr das aktuelle Datum reinschreibst.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wenn du kein embedded SQL verwenden willst (oder kannst) hast du diesbezüglich tatsächlich ein Problem.
    Per DDS kannst du zwar eine LF sortiert nach Datum definieren, aber wenn du per Gruppenwechsel-Logik nach Kunde/Artikel arbeiten musst, kannst du dies nicht per simpler LF definieren.

    Hier bieten sich 2 Möglichkeiten an:
    1. Gib die View mit z.B. einen QMQRY in eine temporäre Tabelle mit Index nach Kunde/Artikel aus.
    2. Verwende die COBOL-Anweisung SORT, gib als Input die Datei und als Output eine Prozedur an.
    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

  10. #10
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    oder ein OPNQRYF direkt vor dem Aufruf?
    Frag mich aber nicht nach Details, das habe ich zum letzten Mal vor gut 15 Jahren mal gemacht - würde aber zu Deinem OS400-Release passen

    Gruß, Christian

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... ist zwar alles schon ewig her, aber:
    ich kann doch per DDS zwei Tabellen miteinander verjoinen und mit DYNSLT in einer COMP Bedingung zwei Felder aus unterschiedlichen Tabellen vergleichen und wenn in der einen - nicht eben zufällig - das Datum von heute im passenden Format drinsteht ...

    PS: das geht doch selbst bei Query: erst mit einem QMQRY das aktuelle Datum, oder den Monat, oder whatever in eine Auswahltabelle schreiben, die dann im eigentlichen Query mit dazu geholt wird...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. FTP in QSYS oder IFS
    By sisarr in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 29-09-19, 20:46
  2. Von RPG auf ILE-RPG oder ILE-RPG überarbeiten !
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 1
    Letzter Beitrag: 13-11-02, 11:15
  3. chgrdbdire *SNA oder *IP
    By Robi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-03-02, 09:27
  4. V5R1M0 :-))) oder :-(((
    By PS in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 23-08-01, 09:33
  5. Copyimpf zum 2. oder 3. ?
    By horst in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 10-07-01, 15:26

Berechtigungen

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