sql - 如何进行可编辑的UNION查询?

标签 sql ms-access ms-access-2007 ms-office

在复杂的数据库结构过程中,我需要为用户提供一种编辑存储在一系列表中的数据的方法。尽管所有数据类型都相同,但它们的名称并不是按1:1的顺序排列的。为了减轻这种情况,我创建了一个查询,该查询将原始名称(来自外部报告)映射到内部使用的名称。从这些查询中,所有内容都被馈入一个巨型UNION查询中。

所有数据类型和字段大小均正确排列。

为了使此UNION查询正常工作,我还需要做什么?

这是查询背后的当前SQL:

SELECT * FROM MappingQuery1 UNION SELECT * FROM MappingQuery2;

编辑:

以下答案发布了指向KB article的链接,该链接可以确定地说UNION查询中的数据无法更新。有什么办法可以解决这个问题?例如:
SELECT * FROM MappingQuery1, MappingQuery2;

这会工作吗?请记住,所有字段在类型,大小和名称上都是对齐的。

最佳答案

When the query is a Union query, you cannot update data in the query.



http://support.microsoft.com/kb/328828

当Access在联合查询中合并来自不同表的行时,各个行将失去其基础表标识。当您尝试更改联合查询中的行时,Access无法知道您要更新的表,因此它不允许所有更新。

以下问题编辑:

您可能可以使用 VBA ADO 来解决此问题,以更新相应的表。我将采用的方法是确保您的联合表包含具有源表ID的列以及命名源表的另一列。

例如在您的工会中,您将遇到以下情况:
SELECT 'Table1', id, ... FROM Table1
UNION 
SELECT 'Table2', id, ... FROM Table2

然后,通过数据输入表单和VBA,您可以查看当前所选行的值并更新相关表。

编辑2:有一天

这将使用Access VBA将值插入表中
Option Compare Database
Option Explicit

Public Sub InsertDataPunk(TargetTable As String, IdVal As Long, MyVal As String)

    Dim conn As ADODB.Connection
    Set conn = CurrentProject.Connection

    Dim sql As String
    'You could build something fancier here
    sql = "INSERT INTO " & TargetTable & " VALUES (" & IdVal & ",'" & MyVal & "')"

    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = conn
    cmd.CommandText = sql
    cmd.CommandType = adCmdText
    cmd.Execute

End Sub  


InsertDataPunk "Table2", 7, "DooDar"

关于sql - 如何进行可编辑的UNION查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1261959/

相关文章:

sql - 具有各种多值参数的 MS Query,其中可以有一个空参数

ms-access - 如何将字符串转换为日期并在 Access 查询中提取值

sql - AWS Athena 使用 AND 条件查询 JSON 数组

mysql - 操作数应包含 1 列???确实如此,但仍然出错。这是一个错误吗?

ms-access - ACCESS 类未注册

postgresql - postgres 到 MS Access

ms-access - 连续形式只引用第一条记录

sql - 如何将行值显示为列名?

sql - 该函数缺少窗口规范

java - 带有 ms-access 的 JDBC?