从Access转换为SQL后端(多值字段)

时间:2014-07-22 17:46:45

标签: ms-access

所以我将访问后端转换为SQL。我尝试了一些不同的工具(SSMA,升迁向导和简单的导入)。到目前为止,我发现SSMA工具和导入似乎工作得最好,从而消除了我所需的大部分工作。但是,我遇到了一个问题,我无法弄清楚如何克服。

两个字段允许多个值(带复选框的下拉列表)。在转换这些错误时,错误的方式是它不仅不会传递所有信息,还会从另一个字段中获取信息(并且不会传输该信息)。

我尝试强制访问只接受第一个值(并且一起摆脱多个值),但它不会让我。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这应该让你开始。它会将在多选字段中选择的所有值转换为它们自己的表。您需要在三个表之间建立关系,以便在事后建立真正的多对多关系。

Sub ExtractMultiValueFields()

    Dim JoinTable As New DAO.TableDef
    JoinTable.Name = "JoinTable"
    With JoinTable

        .Fields.Append .CreateField("MainTableId", dbInteger)
        .Fields.Append .CreateField("JoinToValue", dbText)
    End With

    Dim joinRs As DAO.Recordset

     CurrentDb.TableDefs.Append JoinTable

    Set joinRs = CurrentDb.OpenRecordset("JoinTable")

    Dim rs As DAO.Recordset
    Dim childrs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("select * from table1")
    Do While Not rs.EOF
        Debug.Print rs("ID")
        Set childrs = rs("col1").Value
        Do While Not childrs.EOF
            Debug.Print childrs("value")    'always "value"
            joinRs.AddNew
                joinRs("MainTableId") = rs("ID")
                joinRs("JoinToValue") = childrs("value")
            joinRs.Update
            childrs.MoveNext
        Loop
        rs.MoveNext
    Loop

End Sub