2017-08-24 44 views
1

我有一个使用DoCmd.TransferSpreadsheet方法将每月数据保存到Access 2013中的Access数据库的宏。我想说明的一个可能情况是,如果将数据保存到数据库,然后某人意识到数据是错误的,并且他们希望在修正数据后重新对有问题的月份的数据进行归档。换句话说,是否有一种方法可以让我更改我的代码以覆盖与要归档的数据相同月份的数据?使用传输格式覆盖现有数据

存档数据中的一个字段是日期,并且它也具有字段名称。另一个重要的事情要知道,需要覆盖的数据将全部在同一个月,但不一定是同一天。这里的“my_data”阵列会是什么样子在Excel中一个简单的例子:

sample data

Sub excel_export() 
    Dim xls_path As String 
    xls_path = "C:\mywbk.xlsm" 

    Dim db_path As String 
    Dim db_obj As Access.Application 
    db_path = "C:/mydb.accdb" 
    Set db_obj = New Access.Application 

    Call DoCmd.TransferSpreadsheet(acImport, acSpreadsheetTypeExcel12Xml, "TableName", _ 
     xls_path, True, "my_data") 
    db_obj.CloseCurrentDatabase 
    Set db_obj = Nothing 
End Sub 
+0

你很可能只是写,从当月删除所有数据的拟合删除查询。然后你可以再次导入它。为了创建一个合适的例子,我需要更多的数据(比如你如何知道哪个月正在导入)。有没有什么具体的原因,这不会工作/是困难的? (注意:即将离线,可能不会回复到明天) –

+0

感谢您的帮助!我正在查看删除查询。看起来这可能会起作用,但我需要一种方法来询问用户是否想在数据被删除之前覆盖数据。是否有一种查询可以从Access数据库中的日期字段获取月份和年份? 了解导入月份的最佳方法是让程序查看正在导入的数据。 –

回答

0

不导入电子表格,链接它作为一个表。

然后,首先创建一个简单的选择查询来筛选链接表并将字符串日期转换为实际日期。

现在,使用该查询作为源组合更新,并在此描述为您的Access表追加查询:

Update and Append Records with One Query