繁体   English   中英

使用MS Access表单控件将记录从一个表复制到另一个表

[英]Copy records from one table to another with MS Access form control

我有一个基于表格的MS Access数据库,该表格基于从几个表中获取的简化数据的查询。 两个相关表中的主键(ItemNumber)都存在于表单所基于的查询中。

我希望能够使用一个按钮将记录从表Products移至SuspendedProducts-因此分为三部分:

  1. 在产品中选择记录,该记录具有与表单中当前所选条目相同的条目号

  2. 将此记录复制到SuspendedProducts

  3. 从产品中删除

只是为了使其复制记录,我尝试了几件事,但似乎都没有用。 在VBA中,我写了

"INSERT INTO SuspendedProducts SELECT * FROM Products WHERE ItemNumber =" Me.ItemNumber

但它不会将任何内容复制到SuspendedProducts中。 稍作更改使其无能为力,或者抱怨语法错误。

由于评论中的问题已解决,因此我将我的建议发布为答案,以便将此问题标记为已解决。


当前代码基本上存在三个问题:

  • 必须使用CurrentDb.ExecuteDoCmd.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM