【发布时间】:2013-06-30 18:05:42
【问题描述】:
我正在创建一个必须在 Access mdb 数据库文件中调用 subs 的 C# 应用程序。
我在 mdb 文件中创建了一个测试子程序,我可以从 C# 调用它并传递参数。一切正常,但我想将结果传递回 C#。我知道我不能用函数来做到这一点,所以是否可以通过引用传递变量,然后 vba 可以更改变量并得到我的结果?我尝试了以下方法,但它不起作用。有人知道这是否可能吗?
谢谢
VBA 测试子:
Sub test(Byref p1 As String)
p1="bar"
MsgBox p1
End Sub
从 C# 调用它:
Access.Application oAccess = new Access.Application();
oAccess.Visible = true;
oAccess.OpenCurrentDatabase("d:\\tmp\\test1.mdb", false, "");
string t;
t = "foo"
oAccess.Run("test", t);
//t still equals "foo" at this point, it should be equal to "bar"
【问题讨论】:
-
为什么不能使用函数?
-
我觉得有必要提一下,虽然可以做到这一点很有趣,但在C#中不能直接创建这样一个函数的情况并不多。
-
@Andy。好点,我没有考虑到这一点。
-
@Layman:我在这里读到:stackoverflow.com/questions/7548762/…。但我只是测试了它,我可以创建一个函数!我猜我不应该相信我在 SO 上读到的所有内容。
-
@Johan:关于您上面的 cmets,OP(在那个问题中)询问了一个用 MSAccess 编写并在 c# 的 SQL 查询中使用的函数。我没有尝试过,不知道它是否会起作用。没有什么可以不相信它,除非你有答案让它无效。