【问题标题】:Open a sage 300 AccPac DBLink Connection to a session打开一个 sage 300 AccPac DBLink 连接到一个会话
【发布时间】:2015-02-26 20:42:48
【问题描述】:

我正在尝试编写围绕使用 C# 打开 Sage 300 连接的 c# 代码。我正在使用 Acccpac.Advantage DLL。

这是我的代码

try
{
    sage300Session.Init(sessionHandle, appID, programName, appVersion);
    sage300Session.Open(_user, _ppswd, _companyID, DateTime.Today, 0);

    // Open a database link.
    sage300DbLink = sage300Session.OpenDBLink(DBLinkType.Company, DBLinkFlags.ReadWrite);
}

我遇到的问题是,无论我输入什么密码,对 .Open 的调用似乎都成功了。如果我输入了无效的用户或公司 ID,我会按预期收到错误。 (连接状态似乎是打开任何一种方式)。

我的问题是 - 似乎没有使用的密码发生了什么,并且 2- 当我完成我正在做的事情时,有没有办法正确关闭连接?

Accpac.Advantage dll 是 v 2.0.50727,我正在连接到 Sage 300 2014 环境。

【问题讨论】:

  • 你能展示你在哪里创建你的 sage300Session 对象的代码吗?另外,.Init 调用的变量值是多少?您是连接到实时数据还是测试数据,是否为该数据库启用了安全性?

标签: c# session dblink accpac


【解决方案1】:

事实证明,系统数据库中没有启用安全设置以要求密码登录。设置“解决”了问题并使用了密码。我从来没有找到断开会话的方法,所以当我完成处理时,我让它断开连接,让连接超出范围

【讨论】:

  • DBLink 和 Session 对象都有一个 .close 方法。
  • 我已经查看了 API (AccPac.Advantage.Dll) 的 dll,其中任何一个都没有关闭。你能指的是 AccpacCOMAPI 吗?如果是这样,有没有办法将两者结合使用?
  • 嗯——我的错。我本来希望您能够访问 .Close 方法。您也可以尝试将对象变量设置为 Null。您还可以运行 DBSpy 实用程序来确认在您销毁/释放对象变量时您的数据库连接正在关闭。我从来没有真正将两者结合使用(我根本没有使用过 .Net 接口)。我已经从 .Net 轻松访问了 COMApi。
【解决方案2】:

实际上,Session 和 DBLink 都实现了 IDisposable,调用 .Dispose(或 using 关键字)就足以结束会话。 (我本来想将此作为评论添加,但不能)。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多