【问题标题】:Overwrite Existing Data in Access Using transferspreadsheet使用传输电子表格覆盖 Access 中的现有数据
【发布时间】:2017-08-24 21:25:33
【问题描述】:

我有一个宏,它使用 DoCmd.TransferSpreadsheet 方法将每月数据保存到 Access 2013 中的 Access 数据库中。我想说明的一种可能情况是,如果数据被保存到数据库中,然后有人意识到数据是错误的,他们想在修复数据后重新归档相关月份的数据。换句话说,我有没有办法更改我的代码以覆盖与将要归档的数据同月的数据?

存档数据中的一个字段是日期,它也有一个字段名称。另一件重要的事情是,需要覆盖的数据都在同一个月,但不一定是同一天。下面是“my_data”数组在 excel 中的简化示例:

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

【问题讨论】:

  • 您可能只需要编写一个合适的删除查询来删除该月的所有数据。然后你可以再次导入它。要创建一个合适的示例,我需要更多数据(例如您如何知道正在导入哪个月份)。有什么具体原因这不起作用/很难吗? (注:即将下线,可能明天才会回复)
  • 感谢您的帮助!我正在调查删除查询。看起来这可能会起作用,但我需要一种方法来询问用户是否要在删除数据之前覆盖数据。是否有一种查询可以从 Access 数据库中的日期字段中获取月份和年份?了解正在导入的月份的最佳方法是让程序查看正在导入的数据。

标签: excel ms-access excel-2013 vba


【解决方案1】:

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

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

现在,将此查询用作 Access 表的组合更新和附加查询的源,如下所述:

Update and Append Records with One Query

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2011-06-08
    • 2022-06-15
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多