[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Nov 2008
    Beiträge
    38
    Konkretes Beispiel habe ich leider keines, im Prinzip sind
    die Daten aber ganz "normale" SQL-Tabellen.
    Die Vorgabe ist aber, mit nur EINEM Programm, ALLE Tabellen
    auslesen zu können. D.h. dieses eine Lese-Programm wird - wenn man so will - von unterschiedlichsten Bildschirmen aufgerufen und soll dann den durch den Select Cursor
    gefundenen Satz als Datenwurst zurückliefern, unabhängig
    von der Anzahl der Felder, Datentypen und Aufbau.
    Es wird dann ein String mit maximaler Länge im Programm
    vorgesehen, um die Auswertung des Datenstrings kümmert
    sich dann ein anderes Programm.
    Kann gut sein, dass sich sowas mit SQL gar nicht realisieren läßt, das bin ich eben gerade am erforschen.
    Nachdem andere Entwicklungsumgebungen aber Datawindows/-Areas/-Grids o.Ä. unterstützen, lassen sich dann hier vielleicht
    so in einer Schleife die Spalten durch Konvertieren zusammen"stringen", damit der VARPG damit gefüttert werden kann.
    Also VARPG-GUI sendet "Select X from Y... " an das
    "Connector"-DLL, dies schickt dann die gewünschten Spalten
    in einer Wurst zurück, und das VARPG-GUI, welches den Aufbau ja kennt (aber eben erst zur Laufzeit, da es für unterschiedliche Tabellen verwendet wird), analysiert den
    String und stellt die Daten am Bildschirm dar.
    Mit OVRDBF, LVLCHK(NO) und einer Dummy-Datei geht das ohne SQL bereits sehr gut.
    Voraussetzung ist hier aber, dass der
    Satzformatname zum Kompilationszeitpunkt bekannt ist.
    Nachdem dies bei einzelnen Tabellen nicht vorausgesetzt
    werden kann, der Satzformatname aber nicht dynamisch
    sonder fix sein muss, war unser Ansatz, es über den SQL-Weg
    zu versuchen. Für andere Vorschläge sind wir natürlich
    gerne offen.

    Ich Hoffe es hilft zum besseren Verständnis.
    lg
    Chris

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da muss ich dann doch Dieter zustimmen und halte das Konzept für generell falsch (wer immer auch so eine Anforderung stellt).
    VARPG ist dafür der absolut falsche Ansatz, da sich sowas tatsächlich nur mit CLI lösen läßt.
    Embedded dynamisches SQL arbeitet immer noch mit fest definierten Cursorn.
    Wenn also ein Cursor geöffnet ist, kann der selbe Name nicht nochmal verwendet werden, man muss den Cursor dann erst schließen um mit einem anderen Select neu Daten zu lesen.

    Um das ganze abzukürzen:
    Ein solches Konzept gehört in die Tonne gedrückt, da man alle Vorteile des SQL's (Join's, CTE's, u.v.m.) überhaupt nicht nutzen kann.
    Ausserdem produziert man nicht unerheblichen Overhead mit vollkommen unnötigen Konvertierungen.

    SQL's gehören genau dahin, wo sie gebraucht werden und nicht in irgendwelchen Call-Ebenen versteckt.
    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
    Nov 2008
    Beiträge
    38
    Alles klar!
    Danke für die Infos/Meinung.
    SQL wurde ja auch nicht wegen SQL selbst gewählt,
    sondern eigentlich nur um das Satzformat-Problem zu umgehen.
    Falls da an CLI also kein Weg vorbeiführt, so muss es
    dann wohl so sein....(macht mich klarerweise
    auch nicht glücklich, ich werde aber damit leben [müssen])
    Danke + lg
    Chris

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... naja, SQL kann neben Fug auch jeden Unfug und freilich könnte man sowas im View Layer vorgaukeln und über instead Trigger sogar update fähig machen, aber Details dazu rücke ich allenfalls auf der Kappensitzung der Gesellschaft für Informatik raus, damit ich solchen Quatsch (in Worten Quatsch) nicht noch ungewollt unterstütze.

    D*B

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da muss ich dann doch Dieter zustimmen und halte das Konzept für generell falsch (wer immer auch so eine Anforderung stellt).
    VARPG ist dafür der absolut falsche Ansatz, da sich sowas tatsächlich nur mit CLI lösen läßt.
    Embedded dynamisches SQL arbeitet immer noch mit fest definierten Cursorn.
    Wenn also ein Cursor geöffnet ist, kann der selbe Name nicht nochmal verwendet werden, man muss den Cursor dann erst schließen um mit einem anderen Select neu Daten zu lesen.

    Um das ganze abzukürzen:
    Ein solches Konzept gehört in die Tonne gedrückt, da man alle Vorteile des SQL's (Join's, CTE's, u.v.m.) überhaupt nicht nutzen kann.
    Ausserdem produziert man nicht unerheblichen Overhead mit vollkommen unnötigen Konvertierungen.

    SQL's gehören genau dahin, wo sie gebraucht werden und nicht in irgendwelchen Call-Ebenen versteckt.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Nov 2008
    Beiträge
    38
    ;-) ist klar.
    Naja, wir werden diese Thematik wohl auslagern
    (lies: in einer anderen Sprache realisieren) müssen.
    Danke nochmal für eure Tipps/Meinungen!

    lg
    Chris

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. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 12:01
  3. dynamisches SQL
    By redsky in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 06-12-05, 11:23
  4. Dynamisches SQL
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 15-11-05, 11:45
  5. Embedded SQL - Datenbankoptionen in VARPG
    By woki in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-04-04, 12:09

Berechtigungen

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