我使用的是QBFC v13和Delphi XE6。 目标是创建Estimate并将其参数从我的应用程序设置为QuickBooks 我从QBFC13导入了类型库并将其添加到我的项目中。 我的项目编译没有错误。 我从我的应用程序创建了Estimate(片段1,行:04)然后我尝试设置其项目的费率。 当我调用函数Rate.SetValue(片段1,行:06)时,我没有出现错误消息。 然后我调用DoRequest(片段1,行:07)就可以了。 当我检查StatusCode(片段1,第09行)时,它必须是0.但它是3045,StatusMessage(片段1,第10行): "转换价格时出现错误' 23.00'在现场'项目成本'。 QuickBooks错误消息:此字段包含无效字符"
问题#1: 为什么会发生?(变量' rate'是double,原型SetValue(val:Double)的类型为double)
片段1:
01: var
02: rate: double;
i: integer;
03: rate := 23.00;
....
04: estimateAdd := requestMsgSet.AppendEstimateAddRq();
....
05: estimateLineAdd := estimateAdd.OREstimateLineAddList.Append.EstimateLineAdd;
....
06: estimateLineAdd.ORRate.Rate.SetValue(rate);
....
07: QueryResponse := SessionManager.DoRequests(requestMsgSet);
08: i := response.StatusCode;
09: if (i <> 0) then
10: MessageDlg(response.StatusMessage, mtError, [mbOk], 0);
我发现部分解决了我的问题。我可以设置值Rate make call Rate.SetAsString(const val:WideString)(片段2,行:01) 但出现其他问题。当可变利率小数部分为零时,Estimate被添加到QuickBooks中。 如果小数部分不为零(例如:rate:= 23.10)我在app中调用SetAsString程序时会出现异常。 和错误消息:&#34;无效价格值&#34;。
问题#2: 为什么我不能用小数部分评分?
片段2:
01: estimateLineAdd.ORRate.Rate.SetAsString(FloatToStr(rate));
如果我尝试将过程参数更改为字符串值: estimateLineAdd.ORRate.Rate.SetAsString(&#39; 23.21&#39;)我在第一个问题中有错误。 如果我尝试将程序参数更改为: estimateLineAdd.ORRate.Rate.SetAsString(&#39; 23,21&#39;) 我得到相同的异常和错误消息:&#34;无效的价格值。&#34; 这是可以理解的,外围人员是&#39;。&#39;而是&#39;,&#39;。
答案 0 :(得分:0)
delimeter是&#39;。&#39;而是&#39;,&#39;。
我遇到了同样的问题,因为QB在使用,
作为分隔符的机器上运行,不支持:https://community.intuit.com/questions/1012431-how-to-change-number-formatting-decimal-and-grouping-separators
我在Windows中的区域设置设置为ru-RU区域设置,因此QB将价格显示为&#34; 60,12&#34;。
似乎QBFC除了.
:
queryRq.ORSalesPurchase.SalesOrPurchase.ORPrice.Price.SetAsString("60,12"); // this immediatly throws
queryRq.ORSalesPurchase.SalesOrPurchase.ORPrice.Price.SetAsString("60.12"); // this is OK
当我做&#34;获取所有项目&#34;请求,QB返回价格,
,(根据reginal设置):
<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<ItemServiceQueryRs requestID="0" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<ItemServiceRet>
...
<SalesOrPurchase>
<Price>60,07</Price>
但obj.ORSalesPurchase.SalesOrPurchase.ORPrice.Price.GetValue();
毫无例外地返回60
。
真正奇怪的是,(在我手动修复从sendRequestXML返回的xml字符串后),,
.
都没有接受我的QuickBooks Pro 2017!在receiveResponseXML中,我得到了:
<ItemServiceAddRs requestID=\"0\" statusCode=\"3045\" statusSeverity=\"Error\" statusMessage=\"There was an error when converting the price "60.12"
and
<ItemServiceAddRs requestID=\"0\" statusCode=\"3045\" statusSeverity=\"Error\" statusMessage=\"There was an error when converting the price "60,12"
我将设置更改为en-US(适用于QB Pro US)后,所有设置均适用于&#34; 60.12&#34;。