从recordset.field.type属性获取ADO数据类型的名称?

use*_*914 9 ms-access vba

我需要从Access表中生成字段列表(名称,类型和大小).这个简单的VB代码几乎给了我所需要的东西:

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 
Run Code Online (Sandbox Code Playgroud)

然而,"类型"当然是​​一个数字常量,如"10",而不是像"Varchar".

我打算这样做:

Select Case rs.Fields(x).Type
  Case adChar
    fieldType = "adChar"
  Case adInteger
    fieldType = "adInteger"
  Case adDouble
ETCETERA....
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的方法,比如DataTypeEnum.FindName(Type)或者什么?

如果这是一个"愚蠢的问题",请提前道歉,但我不是每天都在VB工作,谷歌搜索没有对此做出明确答复.

use*_*914 7

问题(上面)中的评论中的答案非常好,不幸的是它们归结为"你无法从这里到达那里".没有简单的方法来获取Field中包含的数据类型.我能来的最接近的是为了快速肮脏而做到这一点:

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
Run Code Online (Sandbox Code Playgroud)

建议您访问Allen Browne的优秀页面并获取他的FieldTypeName()函数以获得更好的解决方案.

感谢所有人(mehow,blackhawk,Chris Rolliston和蒂姆威廉姆斯),他们提出了答案.

  • +1提醒我Allen Browne的网站. (2认同)