[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte
  1. #13
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da must du deinen SQL etwas erweitern:

    where ...
    and (KDName = : Name or : Name = ' ')
    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

  2. #14
    Registriert seit
    May 2011
    Beiträge
    30
    @Fuerchau

    Das dachte ich auch, nur das er dann wenn in Feld Name ein *blank drin steht, mir keinen Kunden anzeigt.
    Er soll mir aber sämtliche Kunden anzeigen, wenn er Mitarbeiter das Feld frei lässt.
    Hatte versucht durch das ersetzten von '' zu '*' mir alle Kunden anzeigen zu lassen, aber auch das funktioniert nicht.

    Update:

    EXEC SQL Declare Mycursor Cursor For
    select * from scw_data/CXLAGPF
    where cxfirm =: DDRFIRM
    and cxekvk = 'S'
    and cxsart = 'S'
    and cxmeng <> 0
    and cxrest <> 0
    and CXLAGO = : DCXLAGO
    and CXLAGP = : DCXLAGP
    and CXSTAT = : DCXSTAT
    and CXNUMM between : DVCXARTN and : DBCXARTN
    For Fetch Only;
    Exec Sql Open Mycursor;

    Dow Sqlcode = Ok;
    Exec Sql Fetch Mycursor Into :Mydata;
    If Sqlcode = Ok;
    Exsr FuellePRTF;
    Endif;
    Enddo;
    close IVKLSTP0;
    open IVKLSTP0;

    In dem Fall kann DCXLAGO, DCXLAGP, DCXSTAT aus der DSPF leer sein, dann soll es "ignoriert" werden, sprich, es sollen alle angezeigt werden. Egal was in CXLAGO, CXLAGP, CXSTAT steht.

    Ich hatte es so versucht, mit dem Ausschnitt vor dem SQL:

    if DCXLAGO = '';
    DCXLAGO = '*';
    endif;
    if DCXLAGP = '';
    DCXLAGP = '*';
    endif;
    if DCXSTAT = '';
    DCXSTAT = '*';
    endif;

    das funktioniert nicht.

  3. #15
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich sagte doch du musst den Select selber anpassen:


    and (CXLAGO = : DCXLAGO or : DCXLAGO = ' ')

    Dies ist für alle Felder entsprechend zu definieren.
    Deine Sternchen kannst du vergessen, da du ja dann gezielt auf Stern prüfst.
    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

  4. #16
    Registriert seit
    May 2011
    Beiträge
    30
    Das ist Genial!

    Vielen Dank Fuerchau.

  5. #17
    Registriert seit
    May 2011
    Beiträge
    30
    Da hat sich zu dem Thema direkt noch eine Frage gebildet.

    D MyData E Ds Extname(CXLAGPF)

    EXEC SQL Declare Mycursor Cursor For
    select * from CXLAGPF
    // join artstamm
    // on ASFIRM=cxfirm and ASNUMM=CXARTN
    where cxfirm =DRFIRM
    and cxekvk = 'S'
    and cxsart = 'S'
    and cxmeng <> 0
    and cxrest <> 0
    and (CXLAGO = CXLAGO or CXLAGO = ' ')
    and (CXLAGP = CXLAGP or CXLAGP = ' ')
    and CXNUMM between VCXARTN and BCXARTN
    order by CXNUMM,CXLAGO,CXLAGP,CXGEBI
    For Fetch Only;
    Exec Sql Open Mycursor;
    Dow Sqlcode = Ok;
    Exec Sql Fetch Mycursor Into :Mydata;
    If Sqlcode = Ok;
    Exsr FuellePRTF;
    Endif;
    Enddo;
    close IVKLSTP0;
    open IVKLSTP0;

    Wenn ich hier einen Join einbaue, gibt es keine Treffer mehr, obwohl der join 100% richtig ist. Ich vermute, dass das an MyData liegt, das wie CXLAGPF definiert ist und nicht mit einer zweiten Datei zurecht kommt. Kommentiere ich den join aus, bekomme ich die gewünschten Ergebnisse. In strsql bekomme ich sie auch, woran kann das liegen?

    Danke vorweg schonmal!

  6. #18
    Registriert seit
    Jul 2011
    Beiträge
    31
    Hallo!

    Natürlich muss deine ResultDS (hier genannt "MyData") über die entsprechende Struktur verfügen.

    (Durchs Join entspricht dein Result nicht mehr dem Aufbau der CXLAGPF.)

    Du könntest Beispielsweise eine DS definieren die genauso aufgebaut ist wie das Result aus deinem SQL Statement & das ganze nochmal versuchen

    Vielleicht noch etwas generelles: Benötigst du wirklich ALLE Spalten aus diesen Dateien?
    Laut diversen Spezialisten sollte man wenn nicht unbedingt notwendig kein Select * verwenden.

    LG,
    Sam

  7. #19
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hi,

    wenn du trotz JOIN dennoch nur die Spalten aus der CXLAGPF benötigst, dann mach ein
    Select CXLAGPF.* From ...

    Ansonsten kannst du beim Fetch folgendes machen:

    D MyData E Ds Extname(CXLAGPF)
    D MyData2 E Ds Extname(artstamm)

    Fetch Mycursor Into :Mydata, :mydata2;

    lg Andreas

  8. #20
    Registriert seit
    May 2011
    Beiträge
    30
    Genau nach so einer Möglichkeit habe ich gesucht.

    Danke!

  9. #21
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich denke nicht, dass du im Fetch 2 Strukturen angeben kannst.
    Sobald mehr als 2 Ziele angegeben werden, wird dies als Einzelfelder interpretiert.

    Dir bleibt halt nichts anderes übrig, als obigen Vorschlag aufzunehmen:

    Definiere genau die Felder, die du im Select benötigst und führe diese ebenso einzeln im Fetch auf.

    Nun zu deinem Laufzeitproblem:
    Der Fetch kehrt mit einem negativen SQLCOD zurück und nicht mit 100 (No more Data), da die Feldliste des Fetch nicht mit der Feldliste des Ergebnisses übereinstimmt.
    Es gibt also ein Ergebnis, dass du leider nur nicht verarbeiten kannst.
    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. #22
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... genau dafür gibt es Views!!!
    create view ddd as (select ...)
    und dann select * from ddd. (Soviel nur zum Select *, gegen den absolut nichts spricht, der Design Fehler liegt darin, dass beim select was anderes als Views verwendet werden)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #23
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ich denke nicht, dass du im Fetch 2 Strukturen angeben kannst.
    Doch das geht!!
    Du kannst im Fetch mehrere DS und/oder einzelne Felder angeben.
    Wichtig ist nur, dass die Felder in der DS den Spalten im Select entsprechen.
    Und die Reihenfolge ist zu beachten!!

  12. #24
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wie Sam schon richtig erwähnte, ist die Möglichkeit mehrere DS und Felder gleichzeitig und gemischt zu verwenden nicht unbedingt der beste und schnellste weg.

    Zitat Zitat von S.Neinawaie Beitrag anzeigen
    Vielleicht noch etwas generelles: Benötigst du wirklich ALLE Spalten aus diesen Dateien?
    Laut diversen Spezialisten sollte man wenn nicht unbedingt notwendig kein Select * verwenden.
    lg Andreas

Similar Threads

  1. Dynamisches SQL in einem CL erstellen
    By Sony in forum IBM i Hauptforum
    Antworten: 27
    Letzter Beitrag: 20-07-09, 21:48
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. SQL Statement
    By juergenkemeter in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 15-11-04, 12:15
  5. SQL Statement
    By Pia in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-04-02, 15:24

Berechtigungen

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