无法打开 QB
Trouble opening QB
我是一名资深的 C# 开发人员,但对 QBFC 是全新的。我已经下载了样本,实际上可以用它在我的文件中添加发票,但我有点困惑。除非 QB 启动并且 运行,否则我无法连接。我试图按照示例中的代码进行操作,但这很困难。即使 QB 未打开,我也需要此应用程序将发票和账单添加到文件中。他们只有一个文件,因此不会出现另一个文件已打开的情况。此外,环境简单,因为一切都在同一台计算机上运行。
我的基本问题是:
- 如何 select 正确的 QB 文件并提供凭据以允许访问?
- 是否有使用 QBFC 的简单示例?我发现的所有内容都使用 XML,与 QBFC 相比,这似乎过于复杂。
- 我似乎无法让 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();
}
}
我是一名资深的 C# 开发人员,但对 QBFC 是全新的。我已经下载了样本,实际上可以用它在我的文件中添加发票,但我有点困惑。除非 QB 启动并且 运行,否则我无法连接。我试图按照示例中的代码进行操作,但这很困难。即使 QB 未打开,我也需要此应用程序将发票和账单添加到文件中。他们只有一个文件,因此不会出现另一个文件已打开的情况。此外,环境简单,因为一切都在同一台计算机上运行。
我的基本问题是:
- 如何 select 正确的 QB 文件并提供凭据以允许访问?
- 是否有使用 QBFC 的简单示例?我发现的所有内容都使用 XML,与 QBFC 相比,这似乎过于复杂。
- 我似乎无法让 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();
}
}