我需要从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工作,谷歌搜索没有对此做出明确答复.
问题(上面)中的评论中的答案非常好,不幸的是它们归结为"你无法从这里到达那里".没有简单的方法来获取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和蒂姆威廉姆斯),他们提出了答案.