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

时间:2013-11-01 21:26:02

标签: vba ms-access

我需要从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 

然而,“类型”当然是​​一个数字常量,如“10”而不是像“Varchar”。

我打算这样做:

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

但我想知道是否有更好的方法,比如DataTypeEnum.FindName(Type)或其他东西?

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

1 个答案:

答案 0 :(得分:7)

问题(上文)中的评论中的答案非常好,不幸的是,它们归结为“你无法从这里到达那里”。没有简单的方法可以在字段中获取包含的数据类型。我最接近的就是为快速肮脏的人做这件事:

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和蒂姆威廉姆斯)在答案上的表现。