【问题标题】:Quick Book Integration with C# Windows Application与 C# Windows 应用程序的快速集成
【发布时间】:2013-08-10 06:50:26
【问题描述】:

我的系统中安装了Quick book application。而且我创建的供应商和客户列表很少。

快速书:QuickBooks Simple Start 2010 Free Edition

数据库:QuickBooks Database Server Manager

数据库版本:11.0.1.2584

计算机名:SYS13

在我的 Windows C# 应用程序中,我试图通过阅读 Excel 添加供应商和客户列表。我正在生成 XML 并基于 Excel 输入。

一切正常。但是My C# appQuick Book Database 之间没有发生连接。

我遇到以下错误:

Can't connect to the database.

连接字符串Computer Name=SYS13;Company Data=Demo VSS;Version=11.0.1.2584

我尝试连接的代码:

     try
     {
           rp.OpenConnection("VendorAdd", "VendorAdd");
           MessageBox.Show(connString);
           ticket = rp.BeginSession(connString);

           response = rp.ProcessRequest(ticket, input);
           requestXML = input.ToString();
           responseXML = response.ToString();

     }
     catch (System.Runtime.InteropServices.COMException ex)
     {
           MessageBox.Show("COM Error Description = " + ex.Message, "COM error");
           return;
     }
     finally
     {
           if (ticket != null)
           {
               rp.EndSession(ticket);
           }
           if (rp != null)
           {
               rp.CloseConnection();
           }
      };

任何想法为什么?有关于这个应用程序的示例源代码吗?

提前致谢,

【问题讨论】:

    标签: c# winforms database-connection connection-string quickbooks


    【解决方案1】:

    quickbooks 集成要求您的应用程序在公司的 quickbooks 文件中注册(我相信是 .qbw)。为了实现连接,您必须在 quickbooks 运行时直接针对 quickbooks 安装运行此应用程序,并授权您的应用程序集成到 quickbooks。我将在后续编辑中挖掘相关链接。

    EDIT 以下是为我指明正确方向的链接: http://www.qodbc.com/qodbcconnect.htm http://www.ehow.com/how_8478505_add-integrated-application-quickbooks.html http://www.vtechnologies.com/kb.htm?prodid=2&kbid=797F8F94-3706-480D-A357-31B80AE2D011&

    还有其他一些事情可能会发生。检查您返回的任何 COM 异常并直接调查它们的代码。他们至少会为你指明一个好的方向。我最常遇到的一个是 COM 异常,它告诉我在尝试访问 QuickBooks 时没有打开和运行它。

    如果您在异常中遇到此问题,则需要在尝试连接之前打开快速手册:

    HRESULT: 0x80040430
    

    不过,一般来说,您的代码应该如下所示:

    public IVendorRetList GetVendors(string filePath, string appName)
    {
    var _sessionManager = new QBSessionManager();
    _sessionManager.CommunicateOutOfProcess(true);
    _sessionManager.OpenConnection2(string.Empty, appName, ENConnectionType.ctLocalQBD);
    _sessionManager.BeginSession(filePath, ENOpenMode.omDontCare);
    _request = _sessionManager.CreateMsgSetRequest("US", 12, 0);
    _request.AppendVendorQueryRq();
    //do somethign to filter your vendor query here.
    var response = _sessionManager.DoRequests(_request);
    var vendorList = (IVendorRetList)response.ResponseList.GetAt(0).Detail;
    return vendorList;
    }
    

    【讨论】:

    • 我已经授予此权限并尝试过。它没有连接。我的连接字符串正确吗?
    • 当我在数据库服务器选项卡下打开 QuickBooks Database Server Manager 时,即使我打开 QB 应用程序,它也会显示 No Files are Connected
    • 查看我最近的编辑。我使用 OpenConnection 几乎没有成功。我在 Intuit 的开发网站上查看的所有链接都指向我使用 OpenConnection2,就像我在上面编辑的答案中所做的那样。
    • 这个“QBSessionManager”的参考是什么——我的意思是命名空间和DLL
    • QBSessionManager 来自使用 QBFC12Lib :这是 QuickBooks SDK 中的 DLL。
    猜你喜欢
    • 2023-03-28
    • 2018-05-13
    • 2011-03-05
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多