我正在尝试创建一个Access 2016表单,该表单允许用户更正位于SQL Server表上但有问题的信息。首先是一些限制;我无法在SQL Server中创建任何新内容,用户无权访问ODBC连接的密码。
我知道使用Access Pass-Through Query可以保存ODBC连接,但是您必须使用VBA使用Access窗体中的数据更新查询。
目前我在VBA中的代码是;
mysql = "Update dbo.MRollData Set dbo.MRollData.PolyPart = '" + Me.ActiveControl.Value + "' WHERE dbo.MRollData.LotNum = '" + Me.MRollLotNum.Value + "' AND dbo.MRollData.Side = '" + Me.MRollSide.Value + "' AND dbo.MRollData.MRIndex = '" + Me.MRollIndex.Value + "' AND dbo.MRollData.PolyPart = '" + Me.CurrentValue.Value + "'"
CurrentDb().QueryDefs("PolyPartChange").SQL = mysql
DoCmd.OpenQuery "PolyPartChange", , acEdit
这是通过OnClick命令激活的,但运行此命令我得到运行时错误'''对象不支持此属性或方法。 VBA代码是使用另一个更新执行SQL查询的查询的数据库中的类似代码编写的。
我还试图单独运行查询并继续获取错误"查询必须至少有一个目标字段"
我是否遗漏了某些内容,或者是否无法在Access传递查询中运行SQL Update查询?还有一种更简单的方法来做我正在尝试的事情吗?
UPDATE;我在这里列出了一个标签,我没有看到自动生成为ActiveControl,这应该是Me.ActualValue.Value
答案 0 :(得分:1)
您可以尝试:
CurrentDb.QueryDefs("PolyPartChange").SQL = mysql
CurrentDb.QueryDefs("PolyPartChange").Execute
查询必须是传递查询才能使SQL语法生效。