【问题标题】:access - one form, update one table and insert to another访问 - 一种形式,更新一个表并插入到另一个
【发布时间】:2016-01-18 06:58:06
【问题描述】:

我对访问中的 vba 语法不熟悉,我对查询有疑问。

我有一个表单,在表单中我有一个名为“A”的字段,我想将它插入到表 table_a 和另外两个字段,一个名为“B_ID”的字段包含 ID,另一个字段名为我想在table_b 中更新的“B”(其中 ID 等于字段“B_ID”。

任何想法如何在 VBA 中进行访问?

在 php 和 MySQL 中,我只需要两个这样的查询: INSERT INTO table_b (field_A) VALUES ($_POST['A']) UPDATE table_b WHERE b_id = $_POST['B_ID'] SET B = $_POST['B'] * 或类似的东西...

谢谢!

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    如果您基于可更新查询创建表单,则不需要任何 VBA 代码。表应使用主表中具有唯一键的列进行链接,并且查询不应包含聚合函数。还有一些其他限制,但在大多数情况下,它适用于简单查询

    如果表格未链接或您不想在表单上使用 then,请使用如下代码:

    Dim db As Database
    
    Set db = CurrentDb
    db.Execute "INSERT INTO table_b (field_A) SELECT " & Me.A, dbFailOnError
    db.Execute "UPDATE table_b SET B=" & Me.b & " WHERE b_id = " & Me.B_ID, dbFailOnError
    

    这里我们假设您在表单字段 A、B 和 B_ID 上具有数值,并且表中的相应列是数字。如果字段是文本,请在 SQL 字符串中添加单引号。

    【讨论】:

    • 我尽可能简单地构建表单...我没有为它或其他东西进行更新查询,也没有建立关系。不过,我不确定我是否以最好的方式做到了这一点,我心想,如果我用 VBA 来做到这一点,那将是最可定制和最灵活的。那么,还有其他想法吗?
    • 嗨@Sergey S. 感谢您的回答,但由于某种原因,这段代码重复了我在数据库中添加的每一行......知道为什么吗?
    • 为此代码设置断点并确保它首先调用一次。我相信您将其放入事件中,该事件被多次调用
    • 嗨@Sergey S.,谢谢。我发现了问题 - 出于某种原因,在这个表单以及我程序的其他表单中,我不需要按下任何按钮来向数据库添加一行,而只需更改输入字段,并且然后关闭表单,并将数据添加到数据库中。只有当您按下正在添加的按钮时,我才能做到这一点?也许是因为我打开表单的方式?
    • 如果您想禁用手动添加行,请将表单属性 Data->Allow Additions 更改为 no 并在使用 VBA 添加行后重新查询表单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多