【发布时间】:2018-10-30 01:20:53
【问题描述】:
我正在使用 QB-SDK 使用以下代码从 QB 文件中获取公司名称和其他数据:
public IList<CustomerModelQB> GetAllCustomer(string fromName = "a", string toName = "z", bool IsActiveOnly = true)
{
RequestMsgSet.ClearRequests();
ICustomerQuery CustomerQueryRq = RequestMsgSet.AppendCustomerQueryRq();
if (IsActiveOnly)
{
if (CustomerQueryRq != null)
CustomerQueryRq.ORCustomerListQuery.CustomerListFilter.ActiveStatus.SetValue(
ENActiveStatus.asActiveOnly);
}
else
CustomerQueryRq.ORCustomerListQuery.CustomerListFilter.ActiveStatus.SetValue(ENActiveStatus.asAll);
//Set field value for FromName
CustomerQueryRq.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameRangeFilter.FromName.SetValue(fromName);
//Set field value for ToName
CustomerQueryRq.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameRangeFilter.ToName.SetValue(toName);
CustomerQueryRq.IncludeRetElementList.Add("FullName");
CustomerQueryRq.IncludeRetElementList.Add("AccountNumber");
ResponseMsgSet = SessionManager.DoRequests(RequestMsgSet);
return WalkCustomerQuery(ResponseMsgSet);
}
我查看了iterator 并尝试了一些代码..
似乎它正在获取初始数据,例如获取前一千条记录,仅此而已...逻辑将类似于获取前几条数据记录,然后是接下来的几条记录,依此类推,直到获取的记录总数.... 但不幸的是,QB SDK 没有提供此功能,因为它只让我获取前几条记录,仅此而已...
我真正想做的是:
我的 QB 公司文件中只有几条 10 万条记录,我想获取前几条记录(比如一万条记录),而不是移动到接下来的 1 万条记录,然后是接下来的 1 万条,依此类推......直到所有获取的记录。
虽然我能够使用 ORNameFilter、TotalBalanceFilter 和其他一些过滤器来做到这一点,但我想这样做,比如前 1 万条记录而不是下 1 万条记录,依此类推直到我公司档案中的所有记录。
这实际上是this SO问题的延续。
有没有办法做到这一点?
【问题讨论】:
-
是的,使用 QBSDK,您可以使用迭代器。但我认为直觉建议批量 100 条记录。我们可以成功完成总共 6,000-7,000 条记录。如果你要多批一万,那会很长!您想从 QB 获得哪种对象类型?
-
您能否发布代码以执行 100 条记录迭代。我只想获取前 100 条记录的 FullName 和 AccountNumber 的 XML,然后再获取接下来的 100 条,依此类推...直到记录总数。
-
我有一个 QBFC 的例子。 QBFC 在 QBXML 后面使用,但我不直接使用 QBXML。你想要我的例子吗?
-
是的,请展示你的例子。
标签: c# xml quickbooks intuit