Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
ADODB-Recordset: maximale Länge eines Eintrages?
zurück: Hilfe: Zugriff auf Oracle-DB weiter: Bilder in OLE-Objekt per VBA einfügen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
3rebo5
Neuling


Verfasst am:
13. Feb 2012, 16:26
Rufname:

ADODB-Recordset: maximale Länge eines Eintrages? - ADODB-Recordset: maximale Länge eines Eintrages?

Nach oben
       Version: Office XP (2002)

Guten Tag!

Bisher bin ich immer durch bereits existierende Themen auf den richtigen Weg gekommen, mit meinem aktuellen Problem stehe ich allerdings völlig auf dem Schlauch. Ich hoffe jemand von Euch kann mir dabei weiterhelfen.

Zunächst zu meinem Ziel:
Ich möchte diverse Informationen aus verschiedenen Oracle-Datenbanken (von 8i-11g) in Excel aufbereiten. Die Informationen sind alle in Views des Schemas SYS gespeichert.

Mein Problem besteht nun darin, dass eine Spalte in der Oracle-DB den Datentyp LONG hat. Möchte ich nun einen Eintrag aus dieser Spalte aus meinem Recordset auslesen, werden mir jeweils nur die ersten 100 Zeichen dieses Eintrages übergeben.
Meine Vermutung ist, dass das Problem irgendwo in meinem Recordset-Objekt liegt.

Hier mal ein paar Code-Schnipsel:
Zunächst die globalen Objekte u. Variablen
Code:
Public Rs As ADODB.Recordset
Public m_objConnection As ADODB.Connection
Public init As Boolean
In der folgenden Sub-Routine wird das SQL-Statement verarbeitet und das Ergebnis in das Recordset-Objekt Rs geschrieben
Code:
Private Sub FillRs(sSQL As String)
    Dim objCmd As ADODB.Command

    Set objCmd = New ADODB.Command
    objCmd.ActiveConnection = m_objConnection
    objCmd.CommandType = adCmdText
    objCmd.CommandText = sSQL
    Set Rs = Nothing
    Set Rs = objCmd.Execute
    Set objCmd = Nothing
End Sub
Hier wird die DB-Verbindung aufgebaut
Code:
Private Sub init_db(db_ As String)
    Dim ConnectionString As String

    If Not init Then
        Set m_objConnection = New ADODB.Connection
        ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=" & db_ & ";User ID=[i]user[/i];Password=[i]password[/i];"
        m_objConnection.Open ConnectionString
        init = True
    End If
End Sub
In der Main-Sub werden die beiden Subroutinen aufgerufen und in diesem vereinfachten Bsp. wird der relevante Eintrag im Recordset unverarbeitet in ein Tabellenblatt geschrieben mit seiner Länge. Die Länge ist dabei jeweils maximal 100. Weitere Zeichen werden einfach abgeschnitten, kürzere Einträge werden korrekt erkannt.
Code:
Sub main()
    Dim db As String
    Dim tmp As String
    Dim k As Integer

    db = ActiveSheet.Name
    init_db (db)
    FillRs "select owner,view_name, text from sys.all_views"
    If Not Rs.BOF Then
        Rs.MoveFirst
    End If
    k = 1
    Do While Rs.EOF = False
        Cells(k, 1) = Rs.Fields.Item(Rs.Fields.Count - 1).Value
        Cells(k, 2) = Len(Cells(k, 1))
        Rs.MoveNext
        k = k + 1
    Loop
End Sub
Ich hoffe, dass meine Problemstellung klar geworden ist und ich freue mich über jede hilfreiche Antwort.

Mfg
Nouba
nicht ganz unwissend :)


Verfasst am:
13. Feb 2012, 20:06
Rufname:
Wohnort: Berlin

AW: ADODB-Recordset: maximale Länge eines Eintrages? - AW: ADODB-Recordset: maximale Länge eines Eintrages?

Nach oben
       Version: Office XP (2002)

Hallo,

siehe How To Use ADO GetChunk/AppendChunk with Oracle for BLOB Data

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
3rebo5
Neuling


Verfasst am:
14. Feb 2012, 11:48
Rufname:


AW: ADODB-Recordset: maximale Länge eines Eintrages? - AW: ADODB-Recordset: maximale Länge eines Eintrages?

Nach oben
       Version: Office XP (2002)

Hallo,

danke für die Antwort. Leider löst dieses Vorgehen mein Problem nicht.
Schon beim Auslesen der FileSize wird als ActualSize maximal 100 zurückgegeben.

Edit:
Ich habe es nun auf andere Weise gelöst. Die Methode erzeugt zwar einiges an Overhead auf der DB, allerdings ist die DB nicht sehr stark ausgelastet, so dass es in meinem Fall kein Problem darstellt.
Ich erzeuge auf der DB eine temporäre Tabelle und wandle die Spalte mit dem Datentyp LONG, mit Hilfe der ORACLE-Funktion TO_LOB() in eine Spalte des Typs LOB um. Aus der temporären Tabelle kann ich nun ohne Probleme meine Daten auslesen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Microsoft Access und MS SQL Server: Maximale Zeilenzahl bei Transfer nach Excel 3 PetKrArs 298 24. Sep 2013, 18:50
Gast Maximale Zeilenzahl bei Transfer nach Excel
Keine neuen Beiträge Microsoft Access und MS SQL Server: Maximale Tabellenbreite einer DB-Tabelle 0 Gast 1153 04. Okt 2006, 08:24
Gast Maximale Tabellenbreite einer DB-Tabelle
Keine neuen Beiträge Microsoft Access und MS SQL Server: Maximale Groesse einer Access DB ??? 3 Suffi 10860 06. Jul 2005, 09:16
Willi Wipp Maximale Groesse einer Access DB ???
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Forum