从msysrelationships表中获取序列以从XML文件导入数据

时间:2019-08-19 13:44:36

标签: ms-access vbscript relationship

我有一个XML文件,其中包含数据库所有表的所有记录。

当我有一个定义了所有关系的空数据库时,我可以从msysrelationships表中读取这些关系。现在,我想知道如何找到正确的序列来导入数据。

如果我仅按显示的方式导入数据,则可能会意外引用不存在的数据来导入数据。这是个问题。

我尝试了一种数学方法来找到导入顺序。我找不到正确的函数来获取序列。

有人会知道我如何使用msysrelationships中的信息进行正确的排序吗?

1 个答案:

答案 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

(我希望这很清楚,请问我是否应该提供其他信息。)

这使我在了解数据库内的关系时不知道数据库中的数据。

我希望这对某人有帮助!

相关问题