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

    Subfile - Feld anzeigen

    Hallo!

    Wir haben ein Programm in dem über einen Subfile Daten erfasst werden.
    Es soll eine zweite Version geben, bei der ein zusätzliches Feld im Record angezeigt wird. (in der gleichen Zeile)

    Derzeit ist SFLINZ / SFLRNA sowie SFLSIZ(999) definiert, da auch mehrere hundert Datensätze mittels DFÜ übernommen werden können.

    Wenn man die Ausgabe des Feldes mittels Indikator steuert wird es bei automatisch erstellten Records nicht angezeigt.

    Alle 999 Records leer Auszugeben kommt nicht in Frage, da bei Enter sämtliche Daten geprüft werden müssen, und es dem User nicht zuzumuten ist, dass jedes mal 999 Records eingelesen werden müssen.

    Wir würden es außerdem gerne vermeiden einen zusätzlichen Record zu definieren, da es bereits zwei unterschiedliche Records gibt und wir dann bei vier wären.

    Hat jemand eine Idee?

    Danke für eure Hilfe.

    mfg
    Chris

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Felder in der Subfile lassen sich mit BZ nur steuern, wenn SFLSIZ=SFLPAG ist, also kein automatisches Blättern erfolgt.

    Und was SFLSIZ=999 angeht so hat dies die selben Auswirkungen wie SFLSIZ = SFLPAG + 1 !
    Einzige Ausnahme:
    Wenn SFLINZ aktiv ist (mit BZ) werden automatisch SFLSIZ leer Sätze eingefügt.

    Es können unabhägig davon jedoch bis 9999 Sätze geschrieben werden.
    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

  3. #3
    Registriert seit
    Jul 2002
    Beiträge
    218
    ich weiß nicht ob das bei dynamischen subfile funktioniert, müßte aber eigentlich:

    A ATRFLD 1A P
    A DBFELD R O 7 3DSPATR(&ATRFLD)

    im programm atrfld vor und nach dem write sfl setzen
    hex20=normal
    hex27=nondisplay

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Solche Sachen sind mit Vorsicht zu geniessen, da es zu Abbruch führt wenn SFLINZ verwendet wird. In deisem Fall kommt da nämlich X'40' in das Feld.

    Und was die BZ-Steuerung angeht, so kann man sicherlich mit DSPATR(ND) dieses erreichen, einzig Überlagerung von Feldern in einer automatischen SFL geht nicht.

    Durch Verwendung von "NXX____DSPATR(ND)" kann auch SFLINZ das Feld verschwinden lassen, da eben dann die BZ aus ist. Man muss hier also nur umgekehrt denken.
    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

  5. #5
    Registriert seit
    Aug 2006
    Beiträge
    42
    Danke für eure bisherigen Antworten.

    Der Controler ist derzeit definiert:
    A N92 SFLDSP
    A N92 SFLDSPCTL
    A 92 SFLINZ
    A SFLRNA
    A SFLSIZ(0999)
    A SFLPAG(0001)

    Das Feld ist im Record derzeit so definiert:
    A ARTIKELNR 30A B 14 6
    A N55 DSPATR(ND PR)

    Über einen Parameter wird an das Programm übergeben, ob das Feld angezeigt werden soll oder nicht.

    Wenn das Feld nicht angezeigt werden soll, ist alles Okay.
    Wenn das Feld angezeigt werden soll, wird es nur bei Records angezeigt welche mit WRITE SFLRCD ausgegeben werden, bei den übrigen durch SFLINZ initialisierten jedoch nicht.

    Wie bereits gesagt, wollen wir vermeiden dass wir einen dritten u. vierten Record anlegen, da es bereits absehbar ist, das noch weitere Felder auf diese Weiße angezeigt werden sollen.

    Außerdem wollen wir vermeiden, alle 999 Records mit WRITE auszugeben. Da in der Check-Routine bereits auf diverse Files zugegriffen werden muss. Und es dem User nicht zuzumuten ist, dass die Routine durch das einlesen der 999 Records bei jedem Enter noch länger dauert.

    Vielen dank für eure Bemühungen.

    mfg Chris

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    An Stelle des SFLINZ kann man auch selber leere Sätze erstellen, dies geht fast genauso schnell und du kannst die BZ setzen

    clear sflrec
    eval *in55 = *on
    do 999
    write sflrec
    enddo

    oder

    clear sflrec
    eval *in55 = *off
    do 999
    write sflrec
    enddo
    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

  7. #7
    Registriert seit
    Jan 2003
    Beiträge
    746
    [off topic]
    wenn's richtig variabel sein soll, geht doch nix über die gute alte selbstgemachte SLN - "Subfile"
    [/off topic]

  8. #8
    Registriert seit
    Aug 2006
    Beiträge
    42
    Das mit

    clear sflrec
    eval *in55 = *on
    do 999
    write sflrec
    enddo

    oder

    clear sflrec
    eval *in55 = *off
    do 999
    write sflrec
    enddo

    war mir klar.

    Wollte es nur vermeiden, da ja dann beim Prüfen des Subfiles mit READC immer alle 999 Records eingelesen u. upgedated werden müssen.

    eine Möglichkeit ohne alle Records selber zu schreiben gibt es dann wohl nicht, oder?
    Oder kann man bei READC angeben, dass nur Sätze mit Daten überhaupt eingelesen werden?

    Dank für eure Hilfe...
    Falls es wirklich keine andere Möglichkeit gibt, dann sagt mir das bitte einfach, und ich gebe Ruhe. :-)

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Mit BZ und SFLNXTCHG kann beim Write der Modi-Schalter gesetzt werden.
    BZ=*ON => READC liest
    BZ=*OFF => READC überliest
    Dies gilt auch beim Update.
    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
    Registriert seit
    May 2004
    Beiträge
    47
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Solche Sachen sind mit Vorsicht zu geniessen, da es zu Abbruch führt wenn SFLINZ verwendet wird. In deisem Fall kommt da nämlich X'40' in das Feld.

    Und was die BZ-Steuerung angeht, so kann man sicherlich mit DSPATR(ND) dieses erreichen, einzig Überlagerung von Feldern in einer automatischen SFL geht nicht.

    Durch Verwendung von "NXX____DSPATR(ND)" kann auch SFLINZ das Feld verschwinden lassen, da eben dann die BZ aus ist. Man muss hier also nur umgekehrt denken.
    Hallo. Verstehe ich das richtig?
    Eine Überlagerung von Feldern ist in einer Subfile nicht möglich?
    Ich suche nämlich eine Möglichkeit je nach Bezugszahl Feld A oder Feld B anzuzeigen.
    Gruß, cono2000
    http://www.cono2000.de

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dies geht, wenn du wie oben beschrieben, SFLSIZ und SFLPAG identisch hältst und das Blättern ausprogrammierst.
    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. Cursor in Subfile - Cobol
    By Anette in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 24-07-06, 20:52
  2. Teildatei mit SQL anzeigen
    By Rico in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-07-06, 16:25
  3. Eingabefelder im Command reverse anzeigen
    By becama in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-05-06, 19:46
  4. ILE Feld in Feld ansprechen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 10-05-06, 16:26
  5. Subfile: Felder bedingt anzeigen
    By Margit Bester-Helfrich in forum NEWSboard Programmierung
    Antworten: 18
    Letzter Beitrag: 13-08-04, 10:29

Berechtigungen

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