获取ACCESS表结构

来源:互联网 发布:淘宝客数据采集器 编辑:程序博客网 时间:2024/05/21 22:24
经常有朋友问怎么得到ACCESS的表结构。
  1. Public Sub getTables()
  2.     Dim rs As New ADODB.Recordset
  3.     Dim conn As ADODB.Connection
  4.     Dim sSql As String
  5.     
  6.     
  7.     Set conn = CurrentProject.Connection
  8.     sSql = "select id,Name from MSysObjects where Type=1 and flags=0"
  9.     rs.Open sSql, conn
  10.     Do While Not rs.EOF
  11.         Debug.Print "****"; rs.Fields("Name").Value; "****************"
  12.         getTableColumns rs.Fields("Name").Value
  13.         rs.MoveNext
  14.     Loop
  15.     rs.Close
  16.     Set rs = Nothing
  17.     Set conn = Nothing
  18.     
  19. End Sub
  20. Public Sub getTableColumns(sTableName As String)
  21.     Dim rs As New ADODB.Recordset
  22.     Dim conn As ADODB.Connection
  23.     Dim fld As ADODB.Field
  24.     Set conn = CurrentProject.Connection
  25.     rs.Open sTableName, conn, , , adCmdTable
  26.     
  27.     For Each fld In rs.Fields
  28.         Debug.Print fld.Name, sFldType(fld.Type), fld.NumericScale, fld.Precision
  29.         
  30.     Next
  31.     
  32.     rs.Close
  33.     Set rs = Nothing
  34.     Set conn = Nothing
  35. End Sub
  36. Public Function sFldType(iType As Integer)
  37.     Select Case iType
  38.         Case 20
  39.             sFldType = "BigInt"
  40.         Case 128
  41.             sFldType = "Binary"
  42.         Case 11
  43.             sFldType = "Boolean"
  44.         Case 8
  45.             sFldType = "BSTR"
  46.         Case 136
  47.             sFldType = "Chapter"
  48.         Case 129
  49.             sFldType = "Char"
  50.         Case 6
  51.             sFldType = "Currency"
  52.         Case 7
  53.             sFldType = "Date"
  54.         Case 133
  55.             sFldType = "DBDate"
  56.         Case 134
  57.             sFldType = "DBTime"
  58.         Case 135
  59.             sFldType = "DBTimeStamp"
  60.         Case 14
  61.             sFldType = "Decimal"
  62.         Case 5
  63.             sFldType = "Double"
  64.         Case 0
  65.             sFldType = "Empty"
  66.         Case 10
  67.             sFldType = "Error"
  68.         Case 64
  69.             sFldType = "FileTime"
  70.         Case 72
  71.             sFldType = "GUID"
  72.         Case 9
  73.             sFldType = "IDispatch"
  74.         Case 3
  75.             sFldType = "Integer"
  76.         Case 13
  77.             sFldType = "IUnknown"
  78.         Case 205
  79.             sFldType = "LongVarBinary"
  80.         Case 201
  81.             sFldType = "LongVarChar"
  82.         Case 203
  83.             sFldType = "LongVarWChar"
  84.         Case 131
  85.             sFldType = "Numeric"
  86.         Case 138
  87.             sFldType = "PropVariant"
  88.         Case 4
  89.             sFldType = "Single"
  90.         Case 2
  91.             sFldType = "SmallInt"
  92.         Case 16
  93.             sFldType = "TinyInt"
  94.         Case 21
  95.             sFldType = "UnsignedBigInt"
  96.         Case 19
  97.             sFldType = "UnsignedInt"
  98.         Case 18
  99.             sFldType = "UnsignedSmallInt"
  100.         Case 17
  101.             sFldType = "UnsignedTinyInt"
  102.         Case 132
  103.             sFldType = "UserDefined"
  104.         Case 204
  105.             sFldType = "VarBinary"
  106.         Case 200
  107.             sFldType = "VarChar"
  108.         Case 12
  109.             sFldType = "Variant"
  110.         Case 139
  111.             sFldType = "VarNumeric"
  112.         Case 202
  113.             sFldType = "VarWChar"
  114.         Case 130
  115.             sFldType = "WChar"
  116.         Case Else
  117.             sFldType = "unKnown"
  118.     End Select
  119. End Function