[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2017
    Beiträge
    18
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Aber Achtung:
    Steht der Cursor bei Freigabe nicht in der Subfile wird 0 (*zero) zurückgemeldet.
    Wenn du dies nicht berücksichtigst stürzt dein Programm ab.
    Blöde Frage von mir: Wie berücksichtige ich dass? Wie muss ich das anders Definieren oder abfragen?
    Ich hab ein Display mit Abfragedatum im CTL und ein Subfile zur Anzeige. Es stürzt ab, wenn das Subfile leer ist, aber wie verhinder ich dass nun?

    Vielen Dank für die Antwort!!

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.226
    Hallo,
    ich weiß nicht, ob ich deine Frage korrekt verstanden habe. Aber ich denke, grundsätzlich geht folgendes:

    Dein Programm füllt die SFL. Dabei zählst du mit, wie viele Sätze in die SFL gefüllt werden. (Ist kein Aufwand, du musst ja sowieso die Subfile-Record-Nr. hochzählen).
    Abhängig davon, ob die SFL Sätze enthält, schaltest du SFLDSP auf *ON oder *OFF. Außerdem setzt die Record-Nr. für die Positionierung auf 0, wenn deine SFL keine Sätze enthält.

    LG, Dieter

  3. #3
    Registriert seit
    Mar 2017
    Beiträge
    18
    Hallo Dieter,

    soweit ist es richtig, was du denkst.
    Allerdings setzte ich den SFLDSP nicht abhängig davon, ob ich Subfile Sätze habe oder nicht.
    Also ich SFL Steuerung gelernt habe, wurde uns beigebracht, dass SFLDSPCTL, SFLDSP und SFLCLR im Display mit den selben indikatoren immer zusammenhängen müssen, wobei der SFLCLR das N davor bekommt:

    Code:
    A  65                                  SFLDSPCTL
    A  65                                  SFLDSP
    A N65                                  SFLCLR
    Und ich dann im Programm vor dem schreiben des Subfile einmal alles cleare:
    Code:
    if nRRN = 0;           
      nRRN = 1;
      write Sfl1;
    endIf;
    SflClr = *OFF;
    write CTL1;
    SflClr = *ON;
    SflClr ist hier mit der 65 von der INDDS des Display belegt.

    Ich hatte jetzt einfach in das Display CTL noch SFLCSRRRN(&Var1) gepackt, beiden Hidden Felder VAR1 5S 0 und VAR2 4S 0 und VAR2 SFLRCDNBR(CURSOR) als funktion hinzugefügt. So wie ich es im Netz gefunden hatte und dann das ganze so eingebaut bevor ich das Display anzeige:
    Code:
    if Var1 > 0;   
       Var2 = Var1 ;
    else;
       Var2 = 1 ;
    EndIf;
    write HEADER;
    write FOOTER;
    exfmt CTL1;
    Das funktionierte auch alles super, bis keine Daten gefunden werden (Suche mit Datum über eine Datei und habe fürs Wochenende bisher keine Einträge) und das SFL leer bleibt. Dann stürzt mir das Programm beim EXFMT CTL1 ab.
    Dass es abstürzt wenn keine Daten fürs Subfile da sind, wusste ich auch bis vorhin nicht, da ich mit SFLCSRRRN und SFLRCDNBR zum ersten mal arbeite.

    Die Frage ist jetzt, wie fange ich diesen Fehler ab?

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.226
    Guck doch zunächst mal im Joblog, weshalb das Programm abstürzt.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.767
    Wenn eine Subfile leer ist, musst du die SFLDSP auf aus setzen.
    Dann wird SFLRCDNBR ignoriert.

    I.d.R. hast du SFLDSP und SFLDSPCTL getrennt per BZ.
    Somit kannst du steuern, ob die SFL sichtbar ist oder nicht.
    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

  6. #6
    Registriert seit
    Mar 2017
    Beiträge
    18
    Wie bereits erwähnt, mir wurd bei gebracht SFLDSP und SFLDSPCTL immer mit der selben BZ zu versehen und das SFLCLR mit der Negativierten BZ von den beiden...

    Aber ich versuchs mal alle drei zu trennen.

  7. #7
    Registriert seit
    Mar 2017
    Beiträge
    18
    Danke.
    Jetzt stürzt es schonmal nicht mehr ab. Allerdings leert sich meine Anzeige auch nicht mehr.
    Wenn ich jetzt nach einem Tag suche, der keine Daten hat, werden die vorherigen Daten weiterhin angezeigt... Ich hab hin und her und her und hin gemacht mit dem SFLCLR..
    Ich hab keine weitere Idee mehr.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.767
    Du musst in diesem Fall das Format ohne Overlay komplett ausgeben.
    Wenn du also ein Kopf/SFLCTL/SFL/FUSS-Format hast, musst du leider, wenn die SFL leer ist, die Seite komplett neu ausgeben, da es kein partielles Löschen gibt.

    Es gibt zwar ein CLRL(nn) um einen Bereich zulöschen. Dann müsstst du jedoch ein leeres Format definieren, dass genau den SFL-Bereich abdeckt (also Startzeile) und das vor dem EXFMT des SFLCTL ausgeben.

    Ich finde es aber einfach das ganz Bild komplett wieder auszugeben.
    Auf einem SFLCTL habe ich eigentlich nie ein Overlay, da es ja einen Kopf enthält.
    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

  9. #9
    Registriert seit
    Jan 2012
    Beiträge
    1.226
    Du hast doch wahrscheinlich eine Routine "fuelleSubfile" oder so ähnlich. Da musst du am Anfang doch nur die Bezugszahl für SFLDSP aussschalten und SFLCLR einschalten und dann den SFL-Controlsatz mit write ausgeben. Danach ist deine Subfile leer.

    Dann SFLCLR ausschalten, die SFL füllen und (wenn Daten vorhanden sind) die SFLDSP wieder einschalten.

    Mach dir einfach mal bewusst, wofür die Bezugszahlen für SFLDSP und SFLCLR gut sind. Dann wirst du sie auch korrekt einsetzen.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.767
    Aber wie geschrieben, wenn SFLDSP = *OFF und das SFLCTL-Format mit OVERLAY definiert ist, bleibt der alte Inhalt auf dem Bildschirm stehen.
    Deshalb das Kopfformat ohne OVERLAY ausgeben, das löscht erst mal den Schirm.
    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
    Mar 2017
    Beiträge
    18
    Ich hab das Kopfformat in das SFLCTL integriert und das Overlay raus. Jetzt funktioniert es.

    Allerdings wird mir auch mein Fuß-Format mit den Funktionstastenangaben nicht mehr angezeigt.
    Ein Problem gelöst, das nächste entstanden.

Similar Threads

  1. Subfile - Feld anzeigen
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 01-09-10, 16:21
  2. Cursor in Subfile - Cobol
    By Anette in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 24-07-06, 21:52
  3. KEYED DATA QUEUES SUBFILE DESCEND RPGLE
    By borwegen in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 30-06-06, 10:04
  4. Subfile Drop
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 22-05-06, 14:56
  5. Subfile aus einer Subfile?
    By Toschie in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-06-05, 15:21

Berechtigungen

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