-
 Zitat von Fuerchau
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!!
-
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
-
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?
-
Guck doch zunächst mal im Joblog, weshalb das Programm abstürzt.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 01-09-10, 16:21
-
By Anette in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 24-07-06, 21:52
-
By borwegen in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 30-06-06, 10:04
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 22-05-06, 14:56
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks