Datentypen der Felder auslesen mit VB6/ADO/OpenSchema

  • VB6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Manü.

    Datentypen der Felder auslesen mit VB6/ADO/OpenSchema

    Servus,

    ich stehe vor einem kleineren Problem und sehe vielleicht den Wald vor lauter Bäumen nicht.
    Ich greife auf eine Sybase-Datenbank zu und möchte mit Hilfe von OpenSchema die Datentypen der Felder auslesen. Das funktioniert auch. Folgender Code:

    Quellcode

    1. Set rsType = gConnection.OpenSchema(adSchemaColumns, Array(Empty, Empty, TableName.Tag, Empty))
    2. Do While Not rsType.EOF
    3. Debug.Print rsType!DATA_TYPE
    4. rsType.MoveNext
    5. Loop
    TableName.Tag ist hierbei ein Knotenpunkt in einem Treeview. Jetzt werden diejenigen die sich damit auskennen sicherlich schon wissen, worauf es hinaus läuft:

    Ich erhalte als Ausgabe nur die datenbank-interne Enumerierung. So erhalte ich bei einem Integerfeld die "3" als Ausgabe, bei einem String die "129". Die Frage ist nun:

    Wie komme ich in Klarschrift an den Datentyp ?
    Gibt es eine andere Methode als das ganze intern über einen Select...Case zu unterscheiden zu müssen ? Das würde ich ungern tun, weil ich dann immerhin noch eine Fallunterscheidung für verschiedene Datenbanken einfügen müsste, da sich die Enumerierungen vermutlich stark von Hersteller zu Hersteller unterscheiden.

    Falls nicht, kennt jemand eine Übersicht, welche die Codierung aufschlüsselt ? Für den Sybase SQL Anywhere würde erstmal genügen. Ich habe bereits im Referenzhandbuch und im Handbuch für Programmierer nachgeschlagen, dort aber nichts enddecken können.

    MfG Nossi
    Ok, ich habe nun die Lösung


    Visual Basic-Quellcode

    1. Dim recColName As ADODB.Recordset
    2. Dim recColType As ADODB.Recordset
    3. Set recColName = gConnection.OpenSchema(adSchemaColumns, Array(Empty, Empty, tablename.Tag, Empty))
    4. Set recColType = gConnection.OpenSchema(adSchemaProviderTypes, Array(Empty, Empty))
    5. Do Until recColName.EOF
    6. recColType.MoveFirst
    7. recColType.Find ("DATA_TYPE = " & recColName("DATA_TYPE"))
    8. Debug.Print "Spaltenname: " & recColName("COLUMN_NAME") _
    9. & ", Felddatentyp: " & recColType("TYPE_NAME")
    10. recColName.MoveNext
    11. Loop
    ahoi,

    freut mich das du durch diese Masse an beteiligungen noch durchgesehen hast und die Lösung rausfiltern konntest ;)
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de