2013-11-01 130 views
8

我需要從Access表中生成字段(名稱,類型和大小)的列表。這個簡單的VB代碼給我幾乎我需要什麼:從recordset.field.type屬性獲取ADO數據類型的名稱?

Set rs = CurrentDb.OpenRecordset("myTable") 
For x = 0 To rs.Fields.Count - 1 
    Print #1, rs.Fields(x).Name & vbTab & rs.Fields(x).Type & vbTab & rs.Fields(x).Size 
Next 

但是課程的「類型」就像是「10」,而不是像「將varchar」數字常量。

我要做到這一點:

Select Case rs.Fields(x).Type 
    Case adChar 
    fieldType = "adChar" 
    Case adInteger 
    fieldType = "adInteger" 
    Case adDouble 
ETCETERA.... 

但我不知道是否有更好的辦法,像DataTypeEnum.FindName(類型):什麼?

如果這是一個「愚蠢的問題」,提前道歉,但我沒有在VB每天工作,谷歌沒有產生明確的答案。

+3

這不是一個愚蠢的問題。嘗試'Debug.Print TypeName(rs.Fields(x)),VarType(rs.Fields(x))'我還沒有測試過,但只是給它一個 – 2013-11-01 21:28:29

+3

有沒有簡單的方法來轉換(在VBA中)一個枚舉值到其等效的「名稱」。你擁有它的方式幾乎是你如何做到的。 –

+2

艾倫布朗有一個很好的[頁面列出常量](http://allenbrowne.com/ser-49.html),他甚至有一個[FieldTypeName](http://allenbrowne.com/func-06.html) (在該頁面上向下滾動一點)功能,但您可能仍然需要自行滾動才能獲得您想要的內容。 – Blackhawk

回答

6

上述問題中的評論答案非常好,不幸的是他們歸結爲「你無法從這裏得到。」沒有簡單的方法在字段中獲取包含的數據類型。我能來最接近的是爲快速正髒做到這一點:

Function Scripting() 
    Dim rs As DAO.Recordset 
    Dim ff As String 
    Dim fieldType As String 
    ff = "c:\Users\me\Desktop\Structure.txt" 
    Open ff For Output As #1 
    Set rs = CurrentDb.OpenRecordset("myTable") 
    For x = 0 To rs.Fields.Count - 1 
     Print #1, rs.Fields(x).Name & vbTab & TypeName(rs.Fields(x).Value) & vbTab & rs.Fields(x).Size 
    Next 
    Close #1 
    rs.Close 
    Set rs = Nothing 
End Function 

你會得到很好的建議轉到Allen Browne的優秀網頁,並抓住他的FieldTypeName()函數更好的解決方案。

感謝大家(mehow,blackhawk,Chris Rolliston和Tim Williams)的回答。

+1

+1提醒我關於Allen Browne的網站。 – paulroho