我正在使用DoCmd.TransferText
从.cvs文件导入数据。我需要为导入的信息添加另一个包含当前日期的列。有没有简单的方法来做到这一点?
答案 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()
作为默认值。