Microsoft Excel

Herbers Excel/VBA-Archiv

SQL-Abfrage: Datentyp ermitteln

Betrifft: SQL-Abfrage: Datentyp ermitteln von: Hendrik
Geschrieben am: 12.08.2014 09:56:59

Hallöchen,
mit unten stehendem Code erzeuge ich ein Array, welches alle Spaltennamen einer SQL-Server-Tabelle enthällt. Klappt prima. Gibt es eine Möglichkeit, auch den Datentyp abzufragen (und in das Array als zweite Spalte aufzunehmen)?

    Dim objConn As ADODB.Connection
    Dim objRec As ADODB.Recordset
    Dim strConnectionString As String
    Dim strServer As String, strDb As String, strTab As String, strSQL As String
    Dim j As Integer
    
    On Error GoTo err1
        strServer = glStrServer
        strDb = glStrDb
        strTab = glStrTab
        strConnectionString = "Provider=MSDASQL.1;Driver=SQL Server;Server=" & strServer & "; _
Database=" & strDb & ";Trusted_Connection=Yes"
        strSQL = "select top 1 * from " & strDb & "." & strTab
        
        Set objConn = New ADODB.Connection
        objConn.CommandTimeout = intAbfrageTimeOut
        objConn.ConnectionString = strConnectionString
        objConn.Open

        Set objRec = New ADODB.Recordset
        objRec.Open strSQL, objConn, adOpenStatic
        
        If objRec.RecordCount = 1 Then
            For j = 0 To objRec.Fields.Count - 1
                ReDim Preserve strArrSpalten(j)
                strArrSpalten(j) = LCase(objRec.Fields(j).Name)
            Next j
        End If
        objConn.Close
    On Error GoTo 0

  

Betrifft: AW: SQL-Abfrage: Datentyp ermitteln von: Tino
Geschrieben am: 12.08.2014 10:51:51

Hallo,
versuche es mal so, nicht getestet!

Der Type gibt den Wert zurück der dem DataTypeEnum entsprechend zugeordnet ist.

z. Bsp.:

DataTypeEnumWert
adDouble5
adInteger3

Dim objConn As ADODB.Connection
Dim objRec As ADODB.Recordset
Dim strConnectionString As String
Dim strServer As String, strDb As String, strTab As String, strSQL As String
Dim j As Integer

On Error GoTo err1
    strServer = glStrServer
    strDb = glStrDb
    strTab = glStrTab
    strConnectionString = "Provider=MSDASQL.1;Driver=SQL Server;Server=" & strServer & ";  _
Database=" & strDb & ";Trusted_Connection=Yes"
    strSQL = "select top 1 * from " & strDb & "." & strTab
    
    Set objConn = New ADODB.Connection
    objConn.CommandTimeout = intAbfrageTimeOut
    objConn.ConnectionString = strConnectionString
    objConn.Open

    Set objRec = New ADODB.Recordset
    objRec.Open strSQL, objConn, adOpenStatic
    
    If objRec.RecordCount = 1 Then
        ReDim Preserve strArrSpalten(1 To objRec.Fields.Count, 1 To 2)
        For j = 0 To objRec.Fields.Count - 1
            strArrSpalten(j + 1, 1) = LCase(objRec.Fields(j).Name)
            strArrSpalten(j + 1, 2) = objRec.Fields(j).Type
        Next j
    End If
    objConn.Close
On Error GoTo 0
Gruß Tino


  

Betrifft: AW: SQL-Abfrage: Datentyp ermitteln von: Hendrik
Geschrieben am: 13.08.2014 11:08:59

Hallo Tino,
vielen Dank, es funktioniert. Mit dem Wert hätte ich so nichts anzufangen gewust, aber nun lasse ich durch eine weitere Funktion einfach aus dem DataType ein N oder A (nummerisch, alphanummerisch) erzeugen.
Schönen Dank.


 

Beiträge aus den Excel-Beispielen zum Thema "SQL-Abfrage: Datentyp ermitteln"