当通过 ODBC(尤其是 AS/400)链接到外部数据源时,我经常在另一端遇到神秘的字段名称,其中没有可用的数据字典。在极少数情况下,我能够从另一个数据库中获取字段描述,我希望能够一次将它们全部导入,而不是一次将每个描述复制/粘贴到表设计表单中。
我无法在系统表中找到它,所以我不知道这个元数据存储在哪里。关于它在哪里以及是否可以批量更新的任何想法?
更新:我设法使用 OpenSchema 方法读取了模式(参见下面的代码),但这会返回一个只读数据集,使我无法更新描述。
Function UpdateFieldDescriptions()
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim rs2 As Recordset
Dim strSQL As String
Dim strDesc As String
Set cn = CurrentProject.Connection
Set rs = cn.OpenSchema(adSchemaColumns)
While Not rs.EOF
If Left(rs!table_name, 4) <> "MSys" Then
Debug.Print rs!table_name, rs!column_name, rs!Description
strSQL = "SELECT Description " & _
"FROM tblColumnDescriptions a " & _
"WHERE a.Name = """ & rs!table_name & """ AND " & _
"a.Column = """ & rs!column_name & """;"
Set rs2 = CurrentDb.OpenRecordset(strSQL)
While Not rs2.EOF
strDesc = rs2.Fields(0)
rs!Description = strDesc ' <---This generates an error
Wend
End If
rs.MoveNext
Wend
rs.Update
rs.Close
Set rs = Nothing
Set rs2 = Nothing
Set cn = Nothing
End Function