2011-09-04 91 views

回答

3

有可以使用幾種方法:

-Parse該文件並創建通過VBA,而不是使用TransferText INSERT語句。

- 如果表格已經存在,您將數據附加到現有表格,並且您有自動編號ID字段或其他方式來區分新數據和舊數據,則可以在導入後添加當前日期通過UPDATE語句:

Dim latestID As Long 

latestID = DMax("yourIDField", "yourTable") 
DoCmd.TransferText acImportDelim, , "yourTable", "c:\import.csv", True 

DoCmd.SetWarnings False 
DoCmd.RunSQL "UPDATE yourTable SET importedDate = #" & Date & "# WHERE yourIDField > " & latestID 
DoCmd.SetWarnings True 

- 如果正在每次導入時創建一個新的表,你可以使用ALTER語句添加列,而更新輸入當前日期:

DoCmd.TransferText acImportDelim, , "yourTable", "c:\import.csv" 

DoCmd.SetWarnings False 

DoCmd.RunSQL "ALTER TABLE yourTable ADD COLUMN importDate DATE" 
DoCmd.RunSQL "UPDATE yourTable SET importDate = #" & Date & "#" 

DoCmd.SetWarnings True 
+0

如果該表已經存在,是沒有問題的,因爲日期和時間的默認值可以在現場進行設置。 – Fionnuala

+0

您可能會考慮使用currentdb.execute而不是docmd.runsql,您不需要使用SetWarnings語句和此方法 – ChrisPadgham

0

另一種方法是爲.csv文件創建一個鏈接的表(se創建新鏈接表時從「打開」對話框彈出窗體中選取正確的文件類型),並創建附加字段爲Date()Now()作爲默認值的附加查詢。

1

您可以使用schema.ini代替傳輸文本方法。

檢查下列博客也介紹了更多關於SCHEMA.INI https://officeaccelerators.wordpress.com/2015/02/08/exporting-text-file-from-access/

Set cn = CreateObject("ADODB.Connection") 
Set cn = CurrentProject.Connection 
sSQL = "insert into TanleName(Field1,Field2,Date) select tab1.Field1,tab1.Field2,date() from " 
sSQL = sSQL & "[text;database=FilePath\;HDR=Yes].[Test.csv] as Tab1" 
cn.Execute sSQL