2016-05-13 112 views
0

有點卡住了。我有一個excel表,可以說以下列 [Date],[Name],[PostCode],[City]從Excel定義表格中插入Excel表格Where Where子句

和一個具有相同列名稱的訪問表。

我想將excel數據表插入到訪問表中,但想要應用WHERE子句,以便它忽略訪問表中已有的日期。

我可以愉快地將所有數據插入訪問表,但不能應用WHERE子句成功地忽略現有日期。而令人討厭的是,我無法引用實際的表名正確,所以我參考了工作表(但工作正常)。

這是我到目前爲止的代碼:

Sub TestInsert() 

    Dim cnn As ADODB.Connection 

    Dim dbPath As String 
    Dim xlPath As String 
    Dim uSQL As String 

    dbPath = "C:\Test\TestDB.accdb" 
    xlPath = "C:\Test\TestXL.xlsm" 

    'Set Connection string 
    Set cnn = New Connection 
    cnnstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath 

    'Open connection to db 
    cnn.Open cnnstr 

     uSQL = "INSERT INTO tbl_ApolloBrochurewareReportTEST " _ 
      & "SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & xlPath & "].[Sheet1$]" 


     cnn.Execute uSQL 

    cnn.Close 

End Sub 

任何輸入或知識將是巨大的,謝謝你。

+0

如果你把一個唯一索引上的日期字段,則重複的記錄將被丟棄。如果不應該有任何重複,應該有這個索引,但是日期字段很少用作唯一字段 - 日期對於這個目的是不可靠的,任何存在的時間元素都將允許這些*明顯*重複的記錄。 –

回答

1

您應該能夠擴展SQL表達式:

uSQL = "INSERT INTO tbl_ApolloBrochurewareReportTEST " _ 
     & "SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & xlPath & "].[Sheet1$] As T " & _ 
     "WHERE T.Date NOT IN (SELECT [Date] FROM tbl_ApolloBrochurewareReportTEST)" 
+0

謝謝@gustav我會放棄。 –

+0

工作過,感謝你。不能相信我錯過了只給excel表一個別名。我對VBA的想法過多,而不是SQL部分。非常感謝你。 –