Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 访问-一个表单,更新一个表并插入到另一个表_Ms Access - Fatal编程技术网

Ms access 访问-一个表单,更新一个表并插入到另一个表

Ms access 访问-一个表单,更新一个表并插入到另一个表,ms-access,Ms Access,我不熟悉access中vba的语法,对查询有疑问 我有一个表单,在表单中我有一个名为“a”的字段,我想将其插入表表a中,还有两个其他字段,一个名为“B_ID”,其中包含ID,另一个名为“B”的字段,我想在表B中更新它(其中ID等于字段“B_ID”) 如何在VBA中访问它 在php和MySQL中,我只需要两个这样的查询: 插入表b(字段A)值($\u POST['A']) 更新表b,其中b\u id=$\u POST['b\u id']设置b=$\u POST['b'] *或者像这样的 谢谢!如果

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

我有一个表单,在表单中我有一个名为“a”的字段,我想将其插入表
表a
中,还有两个其他字段,一个名为“B_ID”,其中包含ID,另一个名为“B”的字段,我想在
表B
中更新它(其中ID等于字段“B_ID”)

如何在VBA中访问它

在php和MySQL中,我只需要两个这样的查询:
插入表b(字段A)值($\u POST['A'])
更新表b,其中b\u id=$\u POST['b\u id']设置b=$\u POST['b']
*或者像这样的


谢谢!

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

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

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。谢谢你的回答,尽管出于某种原因,这段代码会复制我在数据库中添加的每一行…知道为什么吗?为此代码设置一个断点,并确保它先调用一次。我很高兴lieve你把它放进了一个名为multiple timesHi@Sergey S的事件中,谢谢。我发现了这个问题-出于某种原因,在我的程序中,在这个表单和其他表单中,我不需要按任何按钮就可以向数据库添加行,只需更改输入字段,然后关闭表单,数据就可以添加到数据库中。如何n我只在按下按钮添加行时才这样做?可能是因为我打开表单的方式?如果要禁用在表单中手动添加行,请将表单属性数据->允许添加更改为否,并在使用VBA添加行后重新查询表单