[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2011
    Beiträge
    2

    ODBC-Zugriff (ISERIES) - Resultset unvollständig

    Hallo,

    ich greife per ODBC auf eine DB2-DB zu und habe nun folgendes Phänomen:

    1. Select * from Tabelle1 => liefert 1000 Datensätze

    2. Select col1 from Tabelle1 => liefert 1140 Datensätze

    Eigentlich sollte die Anzahl der gelieferten Datensätze doch identisch sein.?

    Wenn nun einer der fehlenden Datensätze kopiert, dann gelöscht und im Anschluss wieder in Tabelle1 eingefügt wird, ist der Datensatz wieder Bestandteil des (ersten) Resultsets.

    Kann jemand sagen, womit dies zusammenhängt? Vielen Dank

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Hier ist leider Raten angesagt, da der Code (also wie du es genau machst) fehlt und zum Raten habe ich keine Lust .
    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
    Mar 2002
    Beiträge
    5.365
    ...null values?

    !ich bin ein unnötiges Füllsel, damit man das speichern kann!
    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
    Registriert seit
    Sep 2011
    Beiträge
    2
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Hier ist leider Raten angesagt, da der Code (also wie du es genau machst) fehlt und zum Raten habe ich keine Lust .
    Danke für die ersten Antworten. Ich bin kein AS400/DB2-Kenner, daher die etwas flapsige Problembeschreibung. Da ich jedoch auf Daten der DB2 zugreifen muss, versuche ich mein Problem noch etwas detaillierter zu schildern.

    Für den Zugriff auf die DB2 habe ich auf einem SQL Server 2005 (Standard) einen Linked Server eingerichtet. Verwendet habe ich hierfür den iSeries Access for Windows ODBC-Treiber. Im Anschluss habe ich dann einen View auf eine der DB2-Tabellen in der SQLServer Datenbank erstellt:

    CREATEVIEW[dbo].[table1]
    AS
    SELECT
    *
    FROMDB2.CATALOG.LIB.table1AStable1

    (liefert z.B. 1300 Datenzeilen)

    Beim Prüfen des Views ist aufgefallen, dass einige Datensätze fehlen bzw. nicht gelistet werden. Verändert man den View und selektiert nicht alle Spalten, dann ändert sich plötzlich auch die Menge der zurückgegebenen Datenzeilen:


    CREATEVIEW[dbo].[table1]
    AS
    SELECT
    col1, col2 FROMDB2.CATALOG.LIB.table1AStable1

    (liefert z.B. 1500 Datenzeilen - auch nicht vollständig)

    Beim weiteren Prüfen ist uns dann wie bereits beschrieben folgendes aufgefallen: Wird ein Datensatz, der im "select *" nicht enthalten ist, gelöscht und im Anschluss wieder in die Tabelle eingefügt, ist er auch wieder Bestandteil des Resultsets von "select *". Es scheint sich also wohl um ein Treiber-Problem zu handeln. Allerdings habe ich keine Ahnung, wo ich ansetzen kann. Die fehlenden Datenzeilen des Views unterscheiden sich inhaltlich nicht weiter von den restlichen Datenzeilen.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    OK, das ist dann etwas klarer.
    Hier müssen die Daten auf der AS/400 erst mal SQL-mäßig auf Richtigkeit geprüft werden.
    Will heißen, dass eine Anwendung auf der AS/400, die nicht in SQL geschrieben ist, leider ungültige Daten in eine Tabelle schreiben kann.
    Eine Datenzeile mit ungültigen Daten kann man auf der AS/400 per STRSQL in der Anzeige mit "++++" sehen.

    Durch deine Methode des Löschens und wieder einfügens berichtigst du die Daten für SQL, so dass wieder alles gelesen werden kann.

    Dies ist KEIN Treiber- sondern ein Datenproblem.

    Ggf. kannst du das näher einschränken, wenn du dich Feld für Feld durcharbeitest.
    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
    Nov 2003
    Beiträge
    2.403
    Was liefern denn SLECT COUNT(*) ... und SELECT COUNT(COL1) ... als Werte zurück?

Similar Threads

  1. Antworten: 3
    Letzter Beitrag: 27-08-06, 17:31
  2. ODBC Zugriff über Access Null-Values
    By Bernd Wiezroek in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 27-04-06, 15:47
  3. ODBC Zugriff
    By mha in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 26-04-05, 15:02
  4. MS Access Zugriff via ODBC auf iSeries Tabellen
    By Rico in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 21-03-05, 09:43
  5. Zugriff von Access auf iSeries per ODBC
    By Unregistriert in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 14-01-05, 08:57

Berechtigungen

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