Microsoft Access DoCmd.TransferText附加列

时间:2011-09-04 15:18:36

标签: ms-access vba

我正在使用DoCmd.TransferText从.cvs文件导入数据。我需要为导入的信息添加另一个包含当前日期的列。有没有简单的方法来做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以使用几种方法:

- 解析文件并通过VBA创建INSERT语句,而不是使用TransferText。

- 如果表已经存在,您将数据附加到现有表,并且您有一个自动编号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语句添加列,然后使用UPDATE输入当前日期:

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

答案 1 :(得分: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

答案 2 :(得分:0)

另一种方法是为.csv文件创建链接表(在创建新链接表时从“打开”对话框弹出窗体中选择正确的文件类型),并使用包含Date()的附加字段创建追加查询或Now()作为默认值。