[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    Probleme mit lookup und Tabellen

    Hallo zusammen,

    ich habe eine ganz komische Situation hier.

    PHP-Code:
    d   Tab1          s             11    dim(30ctdata perrcd(1)
    d   Tab2          s             10    dim(30alt(Tab1
    Bei der Anweisung
    PHP-Code:
    c     A_FirmaLoa    lookup    Tab1          Tab2                     80 
    geht zwar die 80 an, aber Tab2 wird nicht gefüllt. Aber komischerweise nicht bei allen, sondern bisher nur bei einem bestimmten Eintrag.

    Ein Schleifendurchgang vorher hat er den Eintrag "4010201 304" gefunden und korrekt "311 02500" in TAB2 stehen. Beim nächsten Schleifendurchgang hat er den Eintrag "4010201 317" auch gefunden, aber TAB2 ist blanks obwohl "314 05000" drin stehen müsste.

    Ich habe mir die entsprechenden Anweisungen aus der Quelle kopiert und ein eigenständiges Programm daraus gemacht. Da hat er dann keine Probleme.

    Inzwischen habe ich schon alles mögliche probiert und habe letztendlich den ersten Tabelleneintrag "Konstant" gesucht und anschließend erst den variablen Tabelleneintrag. Jetzt ist auf einmal auch TAB2 gefüllt. Ich kapier es nicht. Kann mir dafür jemand einen Grund nennen ?

    Die Suche bei der es jetzt funktioniert sieht wie folgt aus:
    PHP-Code:
    c     '4010201 218'lookup    Tab1           Tab2                    80
    c     A_FirmaLoa    lookup    Tab1          Tab2                     80 
    Die Tabelleneinträge sehen wie folgt aus
    PHP-Code:
    4010201 218 402
    4010201 605 410      
    4010201 600 415      
    4010201 612 419      
    4010201 283 538      
    4010201 034 407      
    4010201 402 731      
    4010201 300 201      
    4010201 302 310 02500
    4010201 304 311 02500
    4010201 317 314 05000
    4010201 337 319 10000
    4010201 328 214      
    4010201 404 424      
    4010201 627 421      
    4010202 218 402      
    4010202 605 410      
    4010202 600 415      
    4010202 612 419      
    4010202 283 537      
    4010202 034 407      
    4010202 402 731      
    4010202 300 201      
    4010202 302 310 02500
    4010202 304 311 02500
    4010202 317 314 05000
    4010202 337 319 10000
    4010202 328 214      
    4010202 404 424      
    4010202 627 421 




  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    schau dir den Dateiwert in Hex an. Da könnte mist drin stehen
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    May 2004
    Beiträge
    444
    Yupp hab ich. Wie aber bereits oben beschrieben. Die Bezugszahl für gefunden geht an. Nur der Wert in TAB2 ist blanks

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Dann hast du den Fehler wohl nicht mitkopiert. ;-)

    Zitat Zitat von harkne Beitrag anzeigen
    Ich habe mir die entsprechenden Anweisungen aus der Quelle kopiert und ein eigenständiges Programm daraus gemacht. Da hat er dann keine Probleme.

  5. #5
    Registriert seit
    May 2004
    Beiträge
    444
    Wir haben das Problem jetzt IBM gemeldet. Er kann das mit den vorhandenen Daten nachvollziehen, also er bekommt zum Glück auch den Fehler hat aber auch noch keine Lösung an was es liegt.

    Es muss auch eine komische Konstellation sein, die den Fehler verursacht, denn wie gesagt, die Bezugszahl des LOOKUP zeigt ja an das er den String in TAB1 gefunden hat nur bleibt der Wert in TAB2 leer obwohl ein Wert drin steht.

  6. #6
    Registriert seit
    May 2004
    Beiträge
    444
    Ich hätte vielleicht 3 Zeilen mehr Code hier posten sollen, dann wäre die Watschn schon früh genug gekommen.

    Im Programm kommt nach

    PHP-Code:
    c     A_FirmaLoa    lookup    Tab1          Tab2                     80 
    noch die Abfrage ob Tab1 gefunden wurde und wenn nicht gefunden wurde "move *blanks" nach TAB2. Wie wir von IBM erfahren haben wird dann aber *blanks in das letzte gefundende TAB2 Element gestellt und somit, wenn wieder nach dem gleichen TAB1 gesucht wird wie zuvor, steht dann halt blanks drin. Deshalb hat er auch gefunden aber *blanks als Ergebnis geliefert.

    Ich dachte aber nicht dass der Compiler überhaupt zulässt dass ich Tabellenelemente die unten konstant angegeben wurden, geändert werden können.

    Naja ... wieder etwas schlauer.

    Entschuldigung dass ich Euch mit fehlenden Anweisungen in die Irre geführt habe.

    Einen schönen Wochenstart an alle.

    Viele Grüße Harkne

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Du kannst keine konstante Tabelle definieren.
    Was du da definierst ist eine Tabelle, die zum Startzeitpunkt deines Programmes in die definierte Tabelle geladen wird, dies entspricht einer INZ-Anweisung auf Feldebene.
    Nur wenn man eine Variable mit INZ initialisiert verhindert dies ja nicht das Überschreiben, das wäre ja doch ziemlich fatal.
    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

  8. #8
    Registriert seit
    May 2004
    Beiträge
    444
    OK. Ich dachte CTDATA heißt constant data ... habe gerade nachgeschaut. Heißt dann doch wohl COMPILE TIME data.

Similar Threads

  1. Free Form von LOOKUP
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-02-17, 11:45
  2. %lookup
    By muadeep in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-10-15, 10:50
  3. InterFormNG - Jetzt mit Datenbankabfrage (Database-lookup-feature)
    By JEsser in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 17-11-14, 19:28
  4. Löschen per SQL in 2 Tabellen
    By harbir in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 12-03-14, 16:34
  5. Tabellen in RPG IV
    By Gimli in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 31-03-03, 11:10

Berechtigungen

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