2014-07-22 31 views
0

所以我將訪問後端轉換爲SQL。我已經嘗試了一些不同的工具(SSMA,升遷嚮導和一個簡單的導入)。到目前爲止,我發現SSMA工具和導入似乎工作得最好,從而消除了我需要的大部分工作。但是,我遇到了一個我無法弄清楚如何克服的問題。從Access轉換到SQL後端(多值字段)

兩個字段允許多個值(帶複選框的下拉列表)。在轉換這些錯誤時,它不僅不會傳送所有的信息,還會從另一個字段獲取信息(並且不會傳送該信息)。

我試過強制訪問只接受第一個值(並一起擺脫多值),但它不會讓我。

任何想法?

+1

多值字段用於與Sharepoint兼容。您可能必須將它們轉換爲1到多個表結構。 – Brad

+0

你好布拉德, 謝謝你的迴應。你會說什麼是轉換它們的最好方法? – LarrySteeze

+0

http://msdn.microsoft.com/en-us/library/office/ff821054%28v=office.15%29.aspx – Brad

回答

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