2

使用用 vb.net 编写的应用程序并使用 qbfc8 连接到 QB Enterprise 11。我正在对公司文件进行简单调用以打开然后关闭连接。这应该会导致 QB 应用程序弹出一条消息,询问是否允许此应用程序访问此文件,然后我可以将其分配给特定用户以登录身份。

这一切都很好,除了在这台特定的服务器上,我还没有让它弹出应用程序请求来访问 QB。总是返回一个错误,说“一个 QuickBooks 公司数据文件已经打开,它与请求的不同。 ”错误代码为-2147220470

我正在使用这些说明来访问文件:http: //support.quickbooks.intuit.com/support/pages/inproducthelp/Core/QB2K12/ContentPackage/Verticals/Retail/rr_sdkapp_access_preferences.html

我在执行此操作时也处于单用户模式:http: //support.quickbooks.intuit.com/support/articles/SLN41168

在此服务器上,有一些 QB 文件,但现在不应该使用它们,但是有没有办法找出服务器上是否有任何 QB 文件正在访问,从而阻止弹出窗口出现?

万分感谢!

4

2 回答 2

4

我知道没有一种直接的方法可以在不调用 BeginSession 并检查错误的情况下查看当前打开的公司文件(如果有的话)。如果您提供公司文件名并且打开了另一家公司,您将收到“ A QuickBooks 公司数据文件已打开且与请求的不同。 ”错误。

如果在调用 BeginSession 时省略公司名称,QuickBooks 将使用打开的任何公司文件并显示提示(假设尚未授予权限)。但是,如果没有打开公司文件,则会收到错误消息“无法启动 QuickBooks。 ”(如果 QuickBooks 根本没有运行),或者“如果 QuickBooks 公司数据文件未打开,则调用“BeginSession”方法必须包含数据文件的名称。 “如果 QuickBooks 已打开,但没有打开公司文件,则会出错。

大多数程序会保存它们已链接到的公司文件,因此它们将在 BeginSession 调用中传递文件名,然后检查“ A QuickBooks 公司数据文件已打开且与请求的不同。 ”错误并以干净的方式向客户提供信息。例如,QuickBooks POS 软件会提示客户是否要继续使用之前设置的旧文件,或者是否要链接到当前打开的文件。

于 2014-01-07T15:49:36.767 回答
1

我通过在同一台服务器上安装连接到 QB 文件的应用程序解决了这个问题。然后(这是配方的重要部分)我将路径从默认的 UNC 路径更改为本地路径,它神奇地起作用了。(我讨厌魔法!如果有人能解释为什么会发生这种情况,那就太好了。)

现在我已将此应用程序的集成应用程序授权添加到 QB 文件中,我现在可以使用相同的应用程序并使用 UNC 路径指向文件从其他工作站访问它。

于 2014-01-07T17:45:46.867 回答