由于我需要为我的客户端更新我的 Adp 文件,因此我在我的 adp 项目中添加了一个新的元数据属性,该属性通过访问 2003 进行,它显示了我的 adp 文件的版本。 我使用本文来建立此元数据,幸运的是,它工作正常。
https://www.pcreview.co.uk/threads/accessing-custom-properties-for-an-adp-file.2921635/
但实际上,问题是如何从 C# 项目中读取此 adp 项目元数据属性?然后我将开始我的更新过程
我已经尝试了本文中的解决方案,但它不起作用,因为容器函数没有名称和所有者属性!
如何从C#程序修改MS Access数据库属性集合(不是数据!
如果有人知道实际的解决方案,请在此处回复。
我的第二个问题是,如果 adp 项目具有用于保护查看源代码的 Visual Basic 锁,那么 C# 项目会发生什么? 是否仍然可以读取元数据属性或 不是!?
我正在使用Windows 10-64 Bit,Access 2003和Visual Studio 2013
经过多次寻找,我找到了解决方案,我想为那些将来可能需要它的人提及。
下面是应在 C# 源代码中添加的代码。
using Access = Microsoft.Office.Interop.Access;
private void button1_Click(object sender, EventArgs e)
{
Access.Application oAccess = new Access.Application();
oAccess.OpenCurrentDatabase(@"C:testtest.adp", false);
var Version = oAccess.Run("GetMyVersion");//Name of procedure in Access module
MessageBox.Show(Version.ToString());
oAccess.CloseCurrentDatabase();
foreach (Process Proc in Process.GetProcesses())
if (Proc.ProcessName.Equals("MSACCESS"))
Proc.Kill();
}
注意:您必须将平台配置从任何 CPU 更改为 X86。
很明显,您应该在Adp项目中有一个"GetMyVersion"函数来返回版本值。即使您锁定了 Adp 项目,此代码也可以方便地工作。
祝你好运!