[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post Tasten definieren

    Hi *ALL,

    ich hab gestern das programmieren mit Subfiles angefangen. Deshalb kenn ich mich da noch nicht so aus.

    Ich hab eine Tabelle mit Daten, und am Anfang jeder Zeile ist ein Feld in dem man eine Zahl eingeben kann:

    2 = Datensatz ändern
    4 = Datensatz Löschen

    F6 = neuen Datensatz hinzufügen.

    Für diese 3 Funktionen habe ich jeweils ein WINDOW erstellt das dann angezeigt werden soll. Und der Befehl wird über eine Subroutine ausgeführt.

    Ich habe jetzt das problem das egal welche dieser 3 Funktionen ich ausführen will die Fehlermeldung:

    "Versuch doppelten Satz in Datei zu schreiben."

    kommt.

    Beim Compilieren kommt kein Definierungsfehler, und ich habe zumindest F6 im RECORD vom DSPF definiert.
    Muss ich die Tasten nochmal extra definieren, und wie definiere ich 2 und 4 im Subfile?

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    837

    Wink

    Hallo Steven,

    Wenn Du mit Subfile anfängst, ist es besonders wichtig auf die Relative Satznummer
    der Sunfile zu achten.
    jeder Datensatz in einer Subfile hat eine Satznummer. Wenn Du win Write auf eine bestehende Satznummer machst, dann bekommst Du den Fehler.
    Ich würde dir vorschlagen dass Du erstmal ein kleines Dummy Programm machst.
    1. Subfile Clearen
    2. z.B Do 100
    mit Subfile schreiben
    3. Subfile anzeigen
    4. Satzauswahl einer Subfiel (2=Änder/4=Löschen etc.) mit READC
    und Update auf Subfilesatz mit RRN
    etc.
    Da ist besser als direkt mit Daten zu arbeiten.
    Naja dann viel Spass
    gruss michael

  3. #3
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post

    Naja, ich hab das ja nicht allein von neuem Geschrieben. Mein Ausbilder hat mir grob das DSPF gemacht, und auch das PGM geschrieben. Ich muss jetzt nur die oben genannten 3 Funktionen einbauen.

    Ich bin jetzt auch schon weiter:

    Bei 2 öffnet sich jetzt das "Ändern" WINDOW, aber der Datensatz ist nicht in den Feldern eingetragen. Und wenn ich dann OK drücke kommt "Fortschreiben oder Löschen in Datei ohne vorherige eingabeoperation"
    Das gleiche kommt auch wenn ich Löschen will. Das "Löschen Fenster öffnet sich" Ich gebe "J" ein und drücke ENTER. Dann kommt die selbe Fehlermeldung.

    Hinzufügen mit F6 funktioniert noch gar nicht. Die Taste ist aber definiert, weil sonst wenn ich sie dürcke ja unten das rote X II kommen würde.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.370

    Post

    Eigentlich gibts hier ja keine Programmierschulung, aber:

    Eine SUBFILE wird betrachtet wie eine normale Datei mit Satznummernzugriff !

    Beim Füllen einer Subfile mittels WRITE sollte man die Anzahl geschriebener Sätze in einer Variablen speichern.

    In jedem Subfile-Satz wird dann z.b. ein 1-stelliges Auswahl-Feld definiert.
    Nach EXFMT des sog. Controlsatzes, kann man mittels READC die, vom Bediener geänderten Sätze abfragen.
    Da diese Sätze bereits existieren, kann man sie auch nur mittels UPDAT zurückschreiben !
    Wenn also die Daten mittels READC gelesen sind, und in einem anderen Format die Felder identisch definiert sind, läßt sich mittels anschließendem "EXFMTBILDx" und "UPDATSFLRCD" die Änderung wieder zurückschreiben.

    Kommen wir zu F6: Ein Hinzufügen zu einer Subfile ist nur mittels WRITE möglich !!

    Funktion 4 (Löschen): Ein Löschen von Subfile-Sätzen ist generell nicht möglich !
    In solchen Fällen wird normalerweise die Subfile komplett neu gefüllt (da sie ja eigentlich auf einer Datenbankdatei basiert).

    Am besten nimmst du die CD "Online-Library" der AS/400 in der sämtliche Handbücher (wahlweise deutsch/englisch) zur Verfügung stehen, und schaust dort im RPG/400-Benutzerhandbuch / RPG/400-User Guide nach.
    Dort ist die Subfile-Programmierung an hand von Beispielen gut erklärt !
    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
    Sep 2002
    Beiträge
    61

    Post

    Also das Problem mit F6 ist gelöst.
    Es werden jetzt alle Fenster angezeigt. Ich hab nur noch das Problem mit 2 Fehlermeldungen:

    Fortschreiben oder Löschen in Datein ohne vorherige Eingabeoperation. (Bei Ändern und Löschen)

    E/A-Fehler CPF5006 in Datei erkannt. (bei Hinzufügen)

  6. #6
    Registriert seit
    Sep 2002
    Beiträge
    61

    Post

    Achja

    Ich Lösche die Datensätze aus einer Datenbank, und nicht aus der SF


    [Dieser Beitrag wurde von Steven am 09. Oktober 2002 editiert.]

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.893

    Post

    Hallo Steven,

    Wenn Du eine Subfile füllst hast Du immer nur den zuletzt gelesenen Satz im Zugriff.

    Wenn Du aus den angezeigten Sätzen einen auswählst, muss Du den dazugehörigen Datensatz wieder neu einlesen. (CHAIN)
    Dazu musst Du in Deiner Subfile entweder die benötigten Schlüssel-Felder oder die relative Satz-Nr. gespeichert haben.

    Und dein Ausbilder macht es sich sehr einfach!

    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

Similar Threads

  1. Auto increment; wie Startwert und Schrittweite definieren?
    By deni87991 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 14-08-06, 12:05
  2. Tasten im Zehnerblock belegen ?
    By ILE_Sascha in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 11-10-03, 11:04
  3. Tasten belegen Zehnerblock
    By ILE_Sascha in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 08-10-03, 14:02
  4. BIBL.-Liste im WAS 3.5 definieren
    By sufukli in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-06-02, 12:07
  5. Wie Command mit Auswahlliste definieren
    By Joachim_Scholz in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 21-11-01, 17:45

Berechtigungen

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