using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using QBFC13Lib;
using System.Globalization;
using System.Windows.Forms;
namespace testing
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
bool sessionBegun = false;
bool connectionOpen = false;
QBSessionManager sessionManager = null;
try
{
sessionManager = new QBSessionManager();
//Create the message set request object to hold our request
IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
//Connect to QuickBooks and begin a session
sessionManager.OpenConnection("", "QuickBook Account Import");
connectionOpen = true;
sessionManager.BeginSession("C:\\Users\\Public\\Documents\\Intuit\\QuickBooks\\Company Files\\***.qbw", ENOpenMode.omDontCare);
sessionBegun = true;
IToDoAdd ToDoAddRq = requestMsgSet.AppendToDoAddRq();
ToDoAddRq.ReminderDate.SetValue(DateTime.ParseExact("29/4/2014", "d/M/yyyy", CultureInfo.InvariantCulture));
//Set field value for Time
ToDoAddRq.ReminderTime.SetValue(10, 10, 10, false);
//Set field value for Notes
ToDoAddRq.Notes.SetValue("abc");
//Set field value for IsActive
ToDoAddRq.IsActive.SetValue(true);
//Set field value for Type
ToDoAddRq.Type_2.SetValue(ENType.tCall);
//Set field value for Priority
ToDoAddRq.Priority.SetValue(ENPriority.pLow);
//Send the request and get the response from QuickBooks
sessionManager.DoRequests(requestMsgSet);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
finally
{
//End the session and close the connection to QuickBooks
if (sessionBegun)
{
sessionManager.EndSession();
}
if (connectionOpen)
{
sessionManager.CloseConnection();
}
}
}
}
}
答案 0 :(得分:4)
QuickBooks qbXML API是版本化的 API。不同版本的QuickBooks将通过不同版本的qbXML规范支持不同的功能。
开发时,您需要确保使用的qbXML API版本都支持您需要的功能,并且您的QuickBooks版本支持。
您目前正在使用qbXML版本8.0
:
IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
通常,QuickBooks版本与qbXML版本支持相差1。例如QuickBooks 14支持qbXML版本13. QuickBooks 13支持qbXML版本12.等。这意味着您现在正在以QuickBooks 2009为目标。
您收到了错误消息,因为如果您引用Intuit's docs,ToDoAdd
Type
和Priority
标记仅在{{1}版本中受支持更高。您需要在请求中不包含这些值,或使用更高版本的qbXML API。