[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jun 2013
    Beiträge
    69

    SQLRPGLE ResultSet in großes Feld

    Hallo alle Zusammen,

    ich habe lange gesucht aber nix gefunden.

    Darum hoffe ich das mir jemand hier helfen kann.

    Ich möchte das ergebnis eines SQL-Befehls den ich Variabel zusammen gebastelt habe in ein großes Text Feld Schieben allerdings krieg ich immer den SQLCODE 30 weil es ja natürlich mehr Felder sind als die eine Hostvariable in die vom PLatz aber alles rein passt.

    Nun möchte ich wissen ob das irgentwie
    geht das ich das Ergebnis einfach in das
    Große 1000A Feld schiebe.

    Schonmal danke schön

    Mit freundlichen Grüßen,

    Malte

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    SQL ist da halt sehr restriktiv.
    Wenn das Ergebnis mehrere Felder hat so sind diese auch einzeln im Fetch anzugeben.
    Du kannst dann halt nur per SQL die Felder "zusammenstrippen":

    select
    F1 concat F2 concat ...
    from ...
    where

    Für numerische Felder musst du diese in Char umwandeln:
    a) char(fx) = linksbündig ohne Vornull mit Vorzeichen und Komma
    b) digits(fx) = mit vornullen, ohne Vorzeichen und ohne Komma

    Für das "auseinandernehmen" der Inhalte bist du dann im RPGLE selber verantwortlich.
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Du willst also z.B. die Bestell-Nr., den Liefer-Termin, die Kunden-Nr. und den Kunden-Namen aus der Auftragskopf-Datei ermitteltn, aber anstatt für jede dieser Spalten eine eigene Hostvariable anzulegen, willst Du alles zusammengeknotet als einen langen Satz haben?

    Wenn ja muss diese Verknüpfung im SELECT-Statement erfolgen. Numerische Werte und Datums-Felder müssen entsprechend konvertiert werden, z.B. so:

    Code:
    Select Char(BestNr) concat Char(LiefTerm, ISO) concat Char(KndNr) concat KndName concat ....
    From ...
    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

  4. #4
    Registriert seit
    Jun 2013
    Beiträge
    69
    danke schon mal für die schnelle antwort

    aber das mit dem im SQL schon auswählen geht nicht das Programm macht den Befehl sehr variable die schlüssel felder sind zwar immer gleich aber die Datei wecheselt und es können auch x felder in irgenteiner Länge hintenm drann hängen

    das feld soll dann später so aussehen als wenn man in eine Datenstrucktur rein guckt. So das ich es in eine extern Diffiniert Datenstrucktur rein schieben kann.

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Die Spaltenattribute (Datentyp, Länge) könntest du auch dynamisch aus den Systemtabellen einlesen.
    Ansonsten kannst du auch mit einem descriptor arbeiten.

    lg Andreas

  6. #6
    Registriert seit
    Jun 2013
    Beiträge
    69
    Das mit aus Systemtabelle auslesen klingt ja sehr gut. Aber wie meinst du das mit einem CL-Befehl ? und wenn ja wie krieg ich das Ergebnis in eine DS DIM(XXX)

    Gruß Malte

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Malte Beitrag anzeigen
    Aber wie meinst du das mit einem CL-Befehl ?
    Wer hat was von CL gesagt?
    Oder meinst du das mit dem descriptor?

    lg Andreas

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du den SQL selber zusammen baust, also die Felder kennst, kannst du alle per CHAR(xxx) umwandeln und per Concat verküpfen.

    Ansonsten gibt es immer noch die Möglichkeit mittels "using SQLDA" zu arbeiten.
    Per "Describe Statement" erhältst du eine SQLDA in der jedes Feld des Selects mit Typ und Ausprägung definiert sind.
    Nun kannst du in die SQLDA entsprechende Pointer auf deine DS berechnen und den Fetch mit einer SQLDA ausführen.
    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
    Jun 2013
    Beiträge
    69
    Ich baue zwar den SQL-Befhel selber zusammen kenn aber nicht alle Felder da es verschiedene PF´s sein können auf die der select geht. Nur die Schlüsselfelder sind immer gleich.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    D.h., dass der Benutzer oder wer auch immer die Feldliste selber bestimmt?
    Dann ändere die Schnittstelle so, dass dir die Felder in z.B. einem Array übergeben werden, so dass du den SQL mittels "char(xxx) concat ..." zusammenbauen kannst.

    Ansonsten bleibt dir nichts anderes übrig als dich mit SQLDA zu beschäftigen oder auf die C-API's SQL-CLI umzusteigen (was auch nicht ohne ist).
    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 2002
    Beiträge
    5.365
    SQL := Structured Query Language
    versuchs mal mit UHK := unstructured Huddel Kauderwelsch
    oder wie wärs mit dsppfm?

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

  12. #12
    Registriert seit
    Jun 2013
    Beiträge
    69
    also ich Bekome von Drausen Praktisch den Dateinamen und alle die Datein die hier bei infrage kommen haben die gleichen Schlüsselfelder.

    Das mit SQLDA werde ich mir mal angucken.

    Ich danke schon mal für die ganze Hilfe.

Similar Threads

  1. Subfile - Feld anzeigen
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 01-09-10, 15:21
  2. Resultset aus Stored Prozedure in SQLRPGLE
    By cimbala in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 28-04-09, 21:53
  3. per SQL Feld ändern...
    By svente in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 23-01-07, 09:49
  4. Timestamp Feld von MS Access abfragen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-09-06, 14:55
  5. ILE Feld in Feld ansprechen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 10-05-06, 16:26

Berechtigungen

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