无法打开 QB

Trouble opening QB

我是一名资深的 C# 开发人员,但对 QBFC 是全新的。我已经下载了样本,实际上可以用它在我的文件中添加发票,但我有点困惑。除非 QB 启动并且 运行,否则我无法连接。我试图按照示例中的代码进行操作,但这很困难。即使 QB 未打开,我也需要此应用程序将发票和账单添加到文件中。他们只有一个文件,因此不会出现另一个文件已打开的情况。此外,环境简单,因为一切都在同一台计算机上运行。

我的基本问题是:

  1. 如何 select 正确的 QB 文件并提供凭据以允许访问?
  2. 是否有使用 QBFC 的简单示例?我发现的所有内容都使用 XML,与 QBFC 相比,这似乎过于复杂。
  3. 我似乎无法让 QB 自动打开。我尝试了下面的代码,但收到一条错误消息 "Could not start QuickBooks".

非常感谢任何指点。

        QBSessionManager qbSession = new QBSessionManager();
        qbSession.OpenConnection("", "Lumber Management System");
        try
        {
            qbSession.BeginSession("C:\Users\Jerry\Documents\QuickBooks\Company Files\MRJ Tecnology, LLC", ENOpenMode.omDontCare);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message + '\n' + ex.StackTrace, "Error opening QB");
        }

要使其正常工作,您需要做一些事情。第一次请求访问公司文件时,必须打开 QuickBooks 并且管理员必须登录。然后将向管理员提供一个对话框,以授予您的应用程序访问 QuickBooks 的权限。在权限对话框中,它会询问管理员是否允许应用程序读取和修改公司文件,有四个选项:

  • 没有
  • 是的,每次都提示
  • 是,只要打开此 QuickBooks 公司文件
  • 是的,总是;即使 QuickBooks 不是 运行
  • 也允许访问

管理员必须选择第四个选项以允许您的应用在没有 运行 的情况下启动 QuickBooks。

我还建议您使用 OpenConnection2 而不是 OpenConnection,并使用唯一 ID 作为第一个参数。您还需要指定连接类型,应该是 ENConnectionType.ctLocalQBD。 您在 BeginSession 调用中传递的文件名似乎也不包含 .qbw 扩展名。这是一个基本示例:

QBSessionManager SessionManager = null;
try
{
    SessionManager = new QBSessionManager();
    SessionManager.OpenConnection2("UniqueAppID", "Lumber Management System", ENConnectionType.ctLocalQBD);
    SessionManager.BeginSession("C:\Users\Jerry\Documents\QuickBooks\Company Files\MRJ Tecnology, LLC.qbw", ENOpenMode.omSingleUser);

    // CODE TO SEND TO QB GOES HERE
}
catch(Exception ex)
{
    MessageBox.Show("Error opening QB:" + ex.ToString());
}
finally
{
    if(SessionManager != null)
    {
        SessionManager.EndSession();
        SessionManager.CloseConnection();
    }
}