我需要从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工作,谷歌搜索对此没有明确的答案。
答案 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和蒂姆威廉姆斯)在答案上的表现。