为什么我不能在包含OCX的Dynamics NAV中编译对象?

时间:2012-08-21 13:50:29

标签: ole navision dynamics-nav

我从文本文件导入了Form对象。当我尝试编译它时,我收到以下错误消息:

  

此消息适用于C / AL程序员:
  由“Microsoft Common Dialog Control 6.0(SP3)”标识的OLE控件或自动化服务器.CommonDialog需要设计时许可证。   无法获得此许可。   确保使用适当的许可证“

正确安装了OLE控件或自动化服务器

我正在使用开发人员许可证在Dynamics NAV中进行开发。 OCX已正确注册,在NAV的“自定义控件”中列为“C:\ Windows \ SysWOW64 \ comdlg32.ocx”。
为什么我不允许编译对象?

3 个答案:

答案 0 :(得分:1)

正如您所说,有问题的许可证纯粹是为了在设计时环境中使用CommonDialog组件。这与您的NAV许可证或您的客户能够运行使用该组件的代码无关。设计时许可证(它只不过是系统注册表中的一个密钥;而不是实际的许可证文件),用于安装例如Microsoft Visual Basic 6.0或Microsoft Visual Studio的旧版本。

如果您可以访问VB6.0或VS2005,则可以在安装盘上使用VB6Controls.reg,如下所述:http://support.microsoft.com/default.aspx?scid=kb;en-us;318597

答案 1 :(得分:0)

正如消息所说,组件加载,尝试获取许可证但没有获得许可证。所以你没有像它说的那样,或者在路径查找中没有它,组件会查看它。

答案 2 :(得分:0)

还有一个技巧可以解决这个问题并避免安装很多像VB6.0这样的垃圾。

此消息与您尝试编译的对象中的某个自动化类型变量有关。

您可以从其他数据库中的任何其他已编译的对象或同一数据库中的任何其他已编译的对象中复制此变量。然后你导入的对象将神奇地编译。只需从导入对象的变量列表中删除该变量,然后使用复制粘贴将其从编译对象中复制。

我不知道那是什么魔法,但它对我有用很多次。我在数据库的恢复备份中复制了同一对象的变量。