我在Access 2013中有一个简单的数据宏。它是一个Before Change数据宏。
这是一个SetField宏。在"价值"字段我需要引用它在表单文本框中的值,我该怎么办?我试着写[Forms]![Form_Name] [Textbox_name],如下图所示(意大利语),但它不起作用。
这是我收到的错误:
在英语中,它可以被翻译为"无法找到标识符"
答案 0 :(得分:2)
您无法在数据宏中引用Access或屏幕/表单对象。数据宏与SQL存储过程的想法相同。商店产品在数据库引擎级别运行。实际上你可以用vb.net打开数据库,甚至FoxPro和数据宏将继续运行。
因此数据宏独立于应用程序。数据宏只有局部变量,它们与SQL Server中存储过程的概念和概念相同。所以这只是数据引擎级代码。
数据引擎和存储过程(数据宏)因此无法访问并从FoxPro,vb.net或MS-Access等“主机”应用程序中获取信息,这些应用程序恰好打开了某种形式。数据宏不知道或看到使用ACE数据库引擎的应用程序(vb.net,c ++,MS-Access)。
建议的解决方法是:
不要引用表单值,但只引用表列值(这假定列在SAME表中)。您还可以从其他表中查找值。因此,数据宏中的所有代码仅为TABLE级别。
如果您必须通过或使用表格!这些代码中的值,那么为什么不在更新事件之前将代码放在表单中而不是使用数据宏?这也意味着您可以使用VBA代码。因此,在编写时,您不需要也不需要引擎级存储过程例程。
您还可以将表单中的值传递给数据宏,但这意味着您不会使用表事件来触发和调用此类代码(使用rundatamacro并传递参数)。
因此,您可以从Access表单调用数据宏,但这些代码不会被表级事件触发或调用。
因此,存储过程代码无法“触及”恰好使用Access数据库引擎的应用程序。