[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    10

    Unhappy Problem beim Datenbankzugriff mit Visual Basic

    Hallo zusammen,

    ich habe folgendes Problem: ich möchte mit Visual Basic auf AS400-Datenbankdateien zugreifen.
    Eine Verbindung zur Datenbank habe ich bereits erstellt, diese funktioniert auch problemlos. Allerdings bekomme ich im Server-Explorer nicht alle Datenbankdateien angezeigt. Auf die restlichen Dateien kann ich zwar zugreifen, bekomme jedoch wirres Zeug zurückgeliefert.
    Woran kann das liegen?

    Vielen Dank im Voraus!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Welches AS/400-Release ist da im Einsatz ?

    In der ODBC-Konfig kannst du die Bibliotheken angeben, deren Tabellen zu sehen sein sollen. Die Standardbibliothek muss dabei leer sein, Register Server.
    Unter bestimmten Umständen schadet die Komprimierung, teste es mal ohne Komrimierung (ODBC-Konfig), Register Leistung.
    Wichtig ist auch der Schalter "Suchmuster aktivieren" der aus sein sollte, Register Katalog.
    Zur Performance ggf. im Register Leistung Vorablesezugriff aktivieren, in diesem Fall wird bereits ein Datenblock gelesen wenn der Query fertig ist und nicht erst beim 1. Zugriff auf die Daten.
    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
    Apr 2005
    Beiträge
    10
    Es ist Release 4R5M0 im Einsatz.

    Ich habe die oben genannten Punkte durchprobiert, jedoch ohne Erfolg. Bei Deaktivierung von "Suchmuster aktivieren" bekomme ich in der Entwicklungsumgebung sogar einen Verbindungsfehler.

    Kann es sein, dass es vielleicht an den Tabellen liegt? Diese stammen aus der 36er Umgebung. Die Felder haben als Datentyp "GEZONT" bzw. "ZCHN". ( Was bedeuten diese Werte ??? )

    Was mich wundert, ist, dass einige Tabellen aus der gleichen Bibliothek sichtbar sind ( sowohl in der Visual Basic Entwicklungsumgebung als auch im Operations Navigator ) und manche nicht.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Gezont sind numerische Felder, die leider ab und an als Zeichenfelder erkannt werden.
    ZCHN sind eben Character-Felder.
    Das Problem wird wohl die fehlende CCSID auf den Tabellen sein (CCSID 65535).
    Um doch eine Codewandlung nach Ansi zu erzwingen musst du im Register "Umsetzung" das Häkchen für "65535 umsetzen" anmachen.

    Das du nicht alle Tabellen siehst liegt an der fehlenden Berechtigung. Du kannst nur die Tabellen sehen, wofür du mit deinem Userprofil auf der AS/400 berechtigt bist.
    Mittels DSPOBJAUT auf der AS/400 kannst du prüfen, ob du berechtigt bzw. ob *PUBLIC berechtigt ist.

    Ein weiteres Problem könnte sein (/36-Umgebung), dass die Tabellen nicht für SQL geeignet sind (DSPFFD: nur 1 Feld) und ggf. mit IDDU beschrieben sind. In diesem Fall musst du eine LF auf der AS/400 erstellen die mittels berechneten Feldern eine Sicht der Daten erstellt. Bei gepackten Daten hast du allerdings keine Chance.
    Hierfür müsstest du die Tabellen in SQL/DDS-beschriebene neue Tabellen kopieren.
    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

  5. #5
    Registriert seit
    Apr 2005
    Beiträge
    10
    Also erst mal vielen Dank!!!!
    Wie sich mittlerweile herausgestellt hat, liegt es zu 99,9% wirklich daran, dass die Tabellen nicht für SQL geeignet sind. Die anderen Dateien, die sich anzeigen lassen, sind neueren Datums.
    Ausserdem sind sie tatsächlich mit IDDU beschrieben.
    Daraus ergibt sich für mich allerdings schon die nächste Frage:
    wie funktioniert das Kopieren in neue Tabellen?
    Muss ich mit Hilfe des Operation Navigators eine neue Tabelle anlegen und dann die Daten rüberkopieren, oder gibt es einen entsprechenden Befehl?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Über OpsNav ist das nicht möglich !
    Du kannst zwar die neuen Tabellen mit SQL erstellen, aber das Kopieren geht nur per CPYF auf der AS/400.
    Besser ist es die neuen Tabellen per DDS passend zur IDDU-Struktur zu erstellen.
    Der CPYF kann den mit der FMTOPT(*NOCHK) die Daten übernehmen.
    Wichtig ist, dass die neue Tabelle in der Struktur tatsächlich identisch zur alten Struktur wird.
    Anschließend noch ein paar Indexe (CREATE INDEX) für die schnelleren Zugriffe erstellen und dann loslegen.
    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

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    10
    ... noch eine Frage zu SQL: wie heisst das Lizenzprogramm, in dem ILE C/400 enthalten ist?

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    ILE C/C++/400 ist ein eigenständiges Lizenzprogramm !
    Erst ab V5R2 ist für SQL-Prozeduren/Funktionen ein interner C-Compiler enthalten, der aber nicht separat für eigene Programme verwendet werden kann.
    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
    Apr 2005
    Beiträge
    10
    ... und schon wieder gibt es Probleme :-((

    Das Kopieren mit dem CPYF Befehl klappt bei den meisten Tabellen recht gut.
    Ein paar Datenbankdateien sind jedoch dabei, bei denen kommt immer eine Fehlermeldung: Pufferlänge ist grösser als Satz für Teildatei
    Liegt es vielleicht daran, dass gepackte Felder dabei sind?
    Kann ich die Tabellen irgendwie trotzdem kopieren?

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    In diesem Fall stimmt die Definition der Zieltabelle mit der Quelltabelle nicht überein.
    Vergleiche mal mit DSPFFD die Anfangspositionen und Ausprägungen der einzelnen Felder der Zieltabelle mit der IDDU-Definition der Quelltabelle.
    Bestimmt gibt es da Abweichungen.

    Es kann auch dann Probleme geben, wenn z.B. ein Zeichenfeld in der Anwendung intern verschieden verwendet wird, mal Text mal gepackte Daten o.ä..
    In diesem Fall kannst du keine Konvertierung durchführen, da in SQL/DDS ein Feld eines bestimmten Typs nur Daten dieses Typs aufnehmen kann.
    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
    Apr 2005
    Beiträge
    10
    Wie kann ich sicherstellen, dass gepackte Felder ebenfalls einwandfrei kopiert werden??

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Indem das Zielfeld auch als gepackt definiert ist !
    Stelle auf jeden Fall sicher, dass die Datenstrukturen identisch sind !!!

    Ungültige Daten kannst du auch ausschließen (sie werden dann beim CPYF ignoriert) mit CPYF .... ERRLVL(*NOMAX).
    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. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. AS400 Userliste in Visual Basic
    By Der_Unwissende in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 08-09-06, 10:10
  3. API QSYCHGPW in Visual Basic 6
    By Der_Unwissende in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-11-05, 09:43
  4. Zugriff OLE DB AS400/DB2 und Visual Basic
    By HPKahn in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 01-02-05, 09:23
  5. Mit Visual Basic alle Register eines Excel Files herausfinden
    By thoughtless in forum NEWSboard Windows
    Antworten: 0
    Letzter Beitrag: 10-06-04, 10:23

Berechtigungen

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