【问题标题】:Runtime error 3825 in MS AccessMS Access 中的运行时错误 3825
【发布时间】:2016-05-08 03:59:07
【问题描述】:

我正在尝试将 5 个数据库合并为一个。这5个数据库的表相同,每个表的结构和字段都相同,并且表和字段的名称也相同。只是每个数据库中的数据不同,因为它已被 5 个不同的成员获取。所以,我试图将所有记录合并为一个。所以,我基本上是在尝试为每个表编写一个查询,然后运行一个 VBA 代码来一个接一个地运行查询。查询是

INSERT INTO SoilMeasurementTable IN 'C:\Users\vtalreja\Desktop\Common.accdb'
SELECT * FROM SoilMeasurementTable;

土壤测量是当前数据库中的表之一,我将其复制到公共数据库中的同一个表中。

我有一个接一个地运行所有查询的 VBA 代码。我已将此 VBA 代码保存为一个模块,并在每个数据库中将其作为宏运行,以便记录合并到一个数据库中。所以我的问题是,当它对一个表运行一个特定的查询时,它会弹出这个错误:

"当源或 目标表包含一个多值字段。”

我不确定这意味着什么。我试图搜索很多但没有成功。任何人都可以请帮助我,让我知道可能是什么错误以及可以进行哪些更改以使其正常工作?

【问题讨论】:

    标签: ms-access runtime-error


    【解决方案1】:

    多值字段是 Access 2007 中引入的一项新功能,仅支持新的 ACCDB 格式,不支持旧的 MDB 格式。

    Access 新用户经常喜欢多值字段,因为它们看起来很方便。它们可能是交互式使用的。但是当您尝试使用代码来操作数据时,多值字段会带来挑战。你找到了一个;错误消息很清楚...您不能将 SELECT * 用于具有多值字段的 INSERT 语句。

    我不知道是否有针对您的情况的简单解决方法,因为我避免使用多值字段。如果是我,我宁愿重新设计以用单独的表替换多值字段,以保存每条记录的多个值……每个值一个记录,每个记录与父记录的主键相关联。

    如果工作量太大,请等待看看其他人是否提供了更简单的解决方案,可以与您当前的数据库结构一起使用。

    【讨论】:

    • +1 我同意应该避免使用多值字段。它们与 Sharepoint 一起使用。您不妨阅读:stackoverflow.com/questions/4591813/…
    • 多值字段是邪恶的。它们可能是必要的邪恶(即,为了 Sharepoint 的兼容性),但这并不意味着它们不是邪恶的。
    • 是否有明确的 SELECT 子句的解决方案?
    【解决方案2】:

    正如@David-W-Fenton 在另一个答案的 cmets 中提到的,修改 SELECT 语句以显式列出字段应该可以解决问题。它对我有用。所以换句话说,改变:

    INSERT INTO SoilMeasurementTable IN 'C:\Users\vtalreja\Desktop\Common.accdb'
    SELECT * FROM SoilMeasurementTable
    

    到:

    INSERT INTO SoilMeasurementTable (field1, field2, field3) IN 'C:\Users\vtalreja\Desktop\Common.accdb'
    SELECT field1, field2, field3 FROM SoilMeasurementTable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多