如何使一个可编辑UNION查询?(How do I make an editable UNION q

2019-09-23 02:35发布

在一个复杂的数据库结构的过程中,我需要提供与存储在一系列表的编辑数据的装置中的用户。 虽然所有的数据类型是相同的,他们不排队1:1在他们的名字。 为了缓解这个问题,我创建了一个映射原来的名称(来自外部的报告)的内部使用的名称的查询; 从这些疑问,一切都被送入一个巨大的UNION查询。

所有的数据类型和字段大小正确对齐。

这样做还有什么我需要做的,使这个UNION查询工作?

这是查询背后的当前SQL:

SELECT * FROM MappingQuery1 UNION SELECT * FROM MappingQuery2;

编辑:

以下的答案发布一个链接到一个知识库文章认为肯定地说,在一个数据状态UNION查询无法进行更新。 有没有什么办法可以解决此问题? 例如:

SELECT * FROM MappingQuery1, MappingQuery2;

将这项工作? 请记住,所有的字段中的类型,大小,和名称一致。

Answer 1:

当查询是联合查询,您将无法更新查询中的数据。

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

当访问组合在一个联合查询不同的表行,各行失去了基础表的身份。 访问不知道你的意思是要更新的表,当你试图在联合查询到更改行,所以它不允许的所有更新。

以下问题编辑

你也许可以解决此使用VBAADO更新相应的表。 我会处理这个的办法是,以确保您的工会表中包含有从源表中的ID与另一列名称的源表沿列。

例如,在你的工会,你就会有这样的事情:

SELECT 'Table1', id, ... FROM Table1
UNION 
SELECT 'Table2', id, ... FROM Table2

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

编辑2:对于onedaywhen

这将值插入使用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"


Answer 2:

我更倾向于将那些单个表合并为一个主表。 在一个表中的所有数据,这可能是一个容易许多。

但是,假设你必须保持indiviual表分开,改变你的映射查询包括源表的名称字段表达式。 并且包括在联合查询表名称字段。

然后创建基于只读UNION查询连续形式。 添加基于另一个查询返回的相应表中的单个记录编辑子窗体。 在主窗体的在目前的情况下,改写为行来源子窗体的查询:

strSQL = "SELECT fields_to_edit FROM " & Me.txtTableSource & _
    " WHERE pkfield =" & Me.txtPKeyField & ";"
Me.SubformName.Rowsource = strSQL
Me.SubformName.Requery


Answer 3:

这是一个非常古老的线程,但我一直在寻找一个解决方案,同样的事情,碰到它。 我有一种是通过几个联合查询推一个复选框值,当我试图更新它,我当然不能。

但是,我没有找到一个解决方案,我想我会分享它。 在复选框的OnEnter事件,我只是跑了更新,我想修改基础表中的字段的SQL更新查询。 如果这是真的我更新为False,如果假我更新为true。 瞧!



文章来源: How do I make an editable UNION query?