我有一个XML文件,其中包含数据库所有表的所有记录。
当我有一个定义了所有关系的空数据库时,我可以从msysrelationships表中读取这些关系。现在,我想知道如何找到正确的序列来导入数据。
如果我仅按显示的方式导入数据,则可能会意外引用不存在的数据来导入数据。这是个问题。
我尝试了一种数学方法来找到导入顺序。我找不到正确的函数来获取序列。
有人会知道我如何使用msysrelationships中的信息进行正确的排序吗?
答案 0 :(得分:0)
我确实找到了解决方案。
首先,我们将所有找到的表放置在数组中。通过BIBD查询:How can I get table names from an MS Access Database?
然后,我们从msysrelationships中读取所有关系。 现在,我们通过依赖关系对tableNames进行排序:
Function getDependencies(database)
Dim loopBit
Dim changeFound
loopBit = True
getTableNames(database)
Do While loopbit
changeCount = 0
DB_Connect database, "SELECT msysrelationships.szObject AS TableName, msysrelationships.szReferencedObject AS Dependency FROM msysrelationships ORDER BY msysrelationships.szObject;"
Do Until DB_EndRS = True
Dim tableNameIndex
Dim dependencyIndex
Dim tableParking
For index = 0 to UBound(tableArray)
If tableArray(index) = DB_Select("TableName") Then
tableNameIndex = index
Exit For
End If
Next
For index = 0 to UBound(tableArray)
If tableArray(index) = DB_Select("Dependency") Then
dependencyIndex = index
Exit For
End If
Next
If tableNameIndex < dependencyIndex Then
changeCount = changeCount + 1
tableParking = tableArray(tableNameIndex)
tableArray(tableNameIndex) = tableArray(dependencyIndex)
tableArray(dependencyIndex) = tableParking
End If
DB_MoveNext
Loop
DB_Disconnect
If changeCount = 0 Then
loopBit = false
End If
Loop
End Function
(我希望这很清楚,请问我是否应该提供其他信息。)
这使我在了解数据库内的关系时不知道数据库中的数据。
我希望这对某人有帮助!