Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与C#Windows应用程序的快速书本集成_C#_Winforms_Database Connection_Connection String_Quickbooks - Fatal编程技术网

与C#Windows应用程序的快速书本集成

与C#Windows应用程序的快速书本集成,c#,winforms,database-connection,connection-string,quickbooks,C#,Winforms,Database Connection,Connection String,Quickbooks,我的系统中安装了QuickBook应用程序。我还创建了一些供应商和客户列表 快速入门:QuickBooks简单入门2010免费版 数据库:QuickBooks数据库服务器管理器 DB版本:11.0.1.2584 计算机名称:SYS13 在我的Windows C应用程序中,我试图通过阅读Excel来添加供应商和客户列表。我正在生成XML并基于Excel输入 一切都好。但是My C#app和Quick Book数据库之间没有连接 我发现以下错误: Can't connect to the datab

我的系统中安装了
QuickBook应用程序
。我还创建了一些供应商和客户列表

快速入门:
QuickBooks简单入门2010免费版

数据库:
QuickBooks数据库服务器管理器

DB版本:
11.0.1.2584

计算机名称:
SYS13

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

一切都好。但是
My C#app
Quick Book数据库之间没有连接

我发现以下错误:

Can't connect to the database.
     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();
           }
      };
连接字符串
计算机名=SYS13;公司数据=演示VSS;版本=11.0.1.2584

我尝试连接的代码:

Can't connect to the database.
     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();
           }
      };
你知道为什么吗?有关于此应用程序的示例源代码吗


提前感谢,

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

编辑此处是指向正确方向的链接:

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

如果出现异常,则需要在尝试连接到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数据库服务器管理器
时,即使打开QB应用程序,其显示的
未连接任何文件。
。请参阅我最近的编辑。我使用OpenConnection几乎没有成功。我在Intuit的开发站点上查看的所有链接都指向我使用OpenConnection2,正如我在上面编辑的答案中所做的那样。这个“QBSessionManager”的参考是什么?我的意思是命名空间和DLLQBSessionManager来自于使用QBFC12Lib:这是QuickBooks SDK中的DLL。