[英]Copy records from one table to another with MS Access form control
我有一个基于表格的MS Access数据库,该表格基于从几个表中获取的简化数据的查询。 两个相关表中的主键(ItemNumber)都存在于表单所基于的查询中。
我希望能够使用一个按钮将记录从表Products移至SuspendedProducts-因此分为三部分:
在产品中选择记录,该记录具有与表单中当前所选条目相同的条目号
将此记录复制到SuspendedProducts
从产品中删除
只是为了使其复制记录,我尝试了几件事,但似乎都没有用。 在VBA中,我写了
"INSERT INTO SuspendedProducts SELECT * FROM Products WHERE ItemNumber =" Me.ItemNumber
但它不会将任何内容复制到SuspendedProducts中。 稍作更改使其无能为力,或者抱怨语法错误。
由于评论中的问题已解决,因此我将我的建议发布为答案,以便将此问题标记为已解决。
当前代码基本上存在三个问题:
必须使用CurrentDb.Execute
或DoCmd.RunSQL
方法来执行已构造的SQL表达式-否则,SQL表达式只是一个字符串。
构造SQL字符串时,您缺少连接运算符( &
):
您的代码:
"INSERT INTO SuspendedProducts SELECT * FROM Products WHERE ItemNumber =" Me.ItemNumber
应该阅读:
"INSERT INTO SuspendedProducts SELECT * FROM Products WHERE ItemNumber =" & Me.ItemNumber
由于证明连接运算符并不成功,因此我建议您的ItemNumber
字段可能是字符串数据类型,因此需要在SQL表达式中使用条件值:
"INSERT INTO SuspendedProducts SELECT * FROM Products WHERE ItemNumber ='" & Me.ItemNumber & "'"
也可以这样写:
"INSERT INTO SuspendedProducts SELECT * FROM Products WHERE ItemNumber =""" & Me.ItemNumber & """"
由于在VBA中, ""
导致文字"
;但是,其可读性稍差。
考虑到上述因素,最终代码可能是:
CurrentDb.Execute _
"INSERT INTO SuspendedProducts " & _
"SELECT * FROM Products WHERE ItemNumber ='" & Me.ItemNumber & "'"
LeeMac评论说Me.ItemNumber
可能是String
数据类型,并提出了此解决方案,该解决方案有效:
CurrentDb.Execute "INSERT INTO SuspendedProducts
SELECT * FROM Products
WHERE ItemNumber ='" & Me.ItemNumber & "'"
June7建议更好的设计可能是在“ Products
表中添加一个字段,指定是否暂停某个项目,以避免不得不移动记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.