[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Leider ist der NetProvider von CA sehr schlecht und unvollständig implementiert, da er nicht von den IDB-Schnittstellen erbt.
    Viele automatische .NET-Funktionen können daher nicht verwendet werden.
    Besser ist es, den allgemeinen OleDB-Provider von .NET zu verwenden und von CA den IBMDASQL-Provider einzusetzen.
    Erst dann hast du die volle Unterstützung von .NET incl. des DataAdapters u.v.m.

    Wenn du dann eine Verbindung aufmachst und per Auswahl ja die LIBL setzt, liefert SchemaTables und SchemaColumns ausschließlich die Objekte, die per USRLIBL erreichbar sind.
    Alle anderen Tabellen werden automatisch ausgeschlossen.

    An Stelle deines StartCL's solltest du in der Verbindung die LIBL selber setzen.
    In der Verbindungsfolge gibst du "Data Source=System;Default Collection=Hauptlib;Library List=Lib1, Lib2, ...;" an und öffnest dann die Verbindung.

    Um alle Eigenschaften und Einstellungen einzusehen kannst du auch folgendes machen:
    Erstelle eine leere "MyConn.udl"-Datei.
    Per Doppelclick kannst du dann den Provider auswählen und im Register "Alle" die Eigenschaften pflegen.
    Die Verbindung kann auch getestet werden.

    Nach dem Speichern der Verbindung kann man diese UDL-Datei in der Verbindungsfolge des Connection-Objekts angeben "File Name=Pfad und Name der UDL".
    Wenn Kennwort und User in der UDL gespeichert sind, brauchst du nichts weiter.

    Da die OLEDB-Objekte alle von den Standard-Objekten DataTable, DataReader usw. erben, kannst du in der Anwendung ausschließlich auf diese Objekte referenzieren.
    Einzig die Verbindung muss einmalig mittels OleDbConnection aufgebaut werden und kann dann per DBConnection verwendet werden.

    API's und sonstige Geschichten sind vollkommen unnötig.

    Die UDL hat den Vorteil, dass du ja beliebige UDL's zur Auswahl anbieten kannst und ggf. über die Properties-Auflistung des Connection-Objekts die "Library List" direkt abfragen kannst.

    Durch die Namenskonvention SQL musst du ja sowieso alle SQL's qualifiziert verwenden.
    Viele Frameworks helfen da aber beim automatischen und dynamischen generieren von SQL's auch zur Laufzeit.
    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. #2
    Registriert seit
    Dec 2013
    Beiträge
    17
    Durch die Namenskonvention SQL musst du ja sowieso alle SQL's qualifiziert verwenden.
    Dies wollte ich ja explizit durch die vorangestellten Biblotheken umgehen!
    Wenn ich jedes SQL qualifizieren muss, brauch ich keine modifizierte Bibliotheksliste.

    Aber so wie es mir im Augenblick scheint, bin ich der einzige mit dieser Aufgabenstellung und dann ist mein Ansatz u.U. falsch.

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ...zum LIBL gehört der Datenschrank und keine Datenbank!!! Da hat man eine Datenbank, die sogar referentielle Integrität sicherstellen kann und dann kommt so ein Programm daher, das dann der Datenbank erzählt: "Schau mal in der LIBL wo Du einen Kundensatz für meinen Auftrag findest".
    Qualifizieren braucht man da garnichts, wenn man pro Datenbank (AS/400 = LIB) eine eigene Connection verwendet und für diese das Default Schema adäquat setzt! Alles andere ist Huddel ala RPG.

    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/

  4. #4
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365
    Zitat Zitat von BenderD Beitrag anzeigen
    ...zum LIBL gehört der Datenschrank und keine Datenbank!!! Da hat man eine Datenbank, die sogar referentielle Integrität sicherstellen kann und dann kommt so ein Programm daher, das dann der Datenbank erzählt: "Schau mal in der LIBL wo Du einen Kundensatz für meinen Auftrag findest".
    Qualifizieren braucht man da garnichts, wenn man pro Datenbank (AS/400 = LIB) eine eigene Connection verwendet und für diese das Default Schema adäquat setzt! Alles andere ist Huddel ala RPG.

    D*B
    Wobei RPG auch ohne "Huddel" geht...

    Gruß Joe

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dann ist wohl der Ansatz falsch.
    Mehrere Libs für eine Datenbank ist ein Designfehler.
    Das kenne ich allerdings auch so.

    Helfen kann da eine neue Lib, die per View alle benötigten Tabellen bündelt.
    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

  6. #6
    Registriert seit
    Dec 2013
    Beiträge
    17
    Zunächst nochmals vielen Dank für die Antworten!
    Ich habe in den letzten Tagen mehrere Ansätze verfolgt, leider bisweilen immernoch ohne dazugehörigen Erfolg.

    Sowohl Brigitta's, sowie Fuerchau's Ansätze funktionieren für meine Zwecke bedingt.

    Denn keine Ahnung weshalb, aber meine OleDbConnection erzeugt exemlarisch folgenden Job:
    Job: QZDASOINIT, Benutzer: QUSER, Nummer:784623
    Darin habe ich meine entsprechende Bibliotheksliste, unabhängig davon ob über mein Start-CL oder über die definierte UDL-Datei.

    ABER, wenn ich weitere Commands ausführe, z.B: "QDBRTVSN", "QUSRJOBI" oder ein Aufruf eines bestehenden CLs, ({{call TESTLIB.TEST01CL(?, ?, ?, ?)}}) erzeugt sich ein weiterer Job:
    Job: QZRCSRVS, Benutzer: QUSER, Nummer: 785186
    und darin ist wieder nur die Standard-Bibliotheksliste enthalten.

    Und somit stehe ich wieder am Anfang meiner Reise,

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der OLEDB-Treiber erkennt durch "{}" einen Programmcall und führt deshalb keinen SQL-CALL durch.
    Dies gibt es nur beim IBM-Treiber.
    Lass einfach die Klammern weg, dann erfolgt der Call auch im ODBC-Job und nicht im Service-Job.
    Wenn du "?" verwenden willst, musst du leider auch CREATE PROCEDURE/FUNCTION durchführen.
    An Stelle der "?" übergibst du genau die Parameter in der gewünschten Ausprägung, also für 12 Zeichen Alpha genau 12 Zeichen in Hochkomma, für dec(11, 2) genau "123456789.12" als Zahl, usw.
    Alternativ geht natürlich auch ein "CALL MYLIB.MYPGM (cast('xxxx' as char(10)), cast(), ...)".
    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

Similar Threads

  1. Zeitdauer ermitteln in RPG
    By sepp in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 09-07-02, 16:09
  2. STRPCCMD blockiert Anwendung
    By peter-venkman in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 09-07-02, 08:55
  3. XML-Anwendung
    By Case Consult in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 18-03-02, 11:41
  4. Web-Anwendung - Zugriff auf AS400-Daten?
    By mott in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 27-02-02, 15:13
  5. Ankündigung eBusiness-Anwendung skyva 3.0
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 31-05-01, 11:18

Berechtigungen

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