如何解决MS Access:将当前记录中的值插入另一个表
我有一个按钮,该按钮应该从当前记录中获取“地址”字段,并将其添加到TAddressCorrectionExclusions表中,该表仅由ID(自动编号)和Address组成。但是,当我运行以下代码时,它会提示输入tempaddress的值。如何将当前记录的“地址”字段存储为tempaddress?
Dim SQL As String
Dim TempAddress As String
TempAddress = Me.Address ' This is the part that's not working
SQL = "INSERT INTO TAddressCorrectionExclusions (Address) VALUES (TempAddress)"
DoCmd.RunSQL SQL
解决方法
由于TempAddress
在任何引用的上下文中都不是命名字段,因此查询引擎会提示您输入该值(如果不使用MS Access GUI,这实际上是错误的)。请注意,您如何像其他标识符一样使用TempAddress
:TAddressCorrectionExclusions
和Address
。
记住SQL是VBA中的单独进程,对它的应用程序层一无所知。这包括带有其他应用程序层的SQL:Java,Python,PHP,C#等。
INSERT INTO TAddressCorrectionExclusions (Address) VALUES (TempAddress)
您真正打算做的是将VBA变量 TempAddress 的基础值传递到SQL查询中。因此,通常的答案是将VBA变量连接到SQL查询中,并将字符串值括在引号中。
SQL = "INSERT INTO TAddressCorrectionExclusions (Address) VALUES ('" & TempAddress & "')"
但是,更好的解决方案是直接在存储的查询中使用表单控件,该查询在打开表单时会将值识别为参数。这样可以有效地将SQL与VBA分开,以提高可读性和可维护性。
SQL (另存为存储的Access查询;调整“ myform”名称)
INSERT INTO TAddressCorrectionExclusions (Address) VALUES (Forms!myform!Address)
VBA (单行命令;无需关闭操作查询)
DoCmd.OpenQuery "mySavedAppendQuery"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。