2013-02-26 97 views
1

我正在使用IntuitBatchRequest將多張發票插入Quickbooks Online。我試圖瞭解響應屬性,以瞭解哪些發票是成功的,以及那些未成功的具體問題是什麼。我正在嘗試兩種不同的方法來檢查結果。一旦程序循環通過它們進行記錄。代碼的簡化版本如下所示:從IntuitBatchResponse獲取狀態

Dim invcResponse as BatchItemResponse 
For each invcResponse in lclBatchResponse.BatchItemResp 
    batchID=invcResponse.bId 
    faultType=invcResponse.Fault.type 
Next invcResponse 

其他代碼將響應綁定到網格以供我審閱。網格代碼片段如下所示:

<asp:GridView id="gv_BatchStatus" runat="server"> 
<Columns> 
<asp:TemplateField> 
    <ItemTemplate> 
    Item<asp:Label id="lbl_item" runat="server" text='<%# Bind("Item.Id.value") %>'></asp:Label> 
    Fault<asp:Label id="lbl_flt" runat="server" text='<%# Bind("Fault.type") %>'></asp:Label> 

上述屬性有效。但是,當我嘗試綁定到Fault.Error.Code時,它告訴我Intuit.Ipp.Data.Error []不包含名稱爲'code'的屬性。但是,Error的類列表說明它具有屬性,其中包含代碼,細節,元素和消息。這些屬性在Visual Studio中的對象瀏覽器中也顯示爲錯誤的字符串屬性。所以,這裏是我的問題... 1.什麼樣的屬性和價值是成功的決定性決心? 2.如何獲得有關錯誤的更多信息?唯一的錯誤屬性,我可以找出(Fault.type)只是告訴我,我得到一個ID異常。

+1

糾錯:Item.id.value的gridview綁定沒有返回任何東西 - 可能是因爲插入失敗。我不確定。但是,通過自動生成列來顯示bId(批次ID)。 – 2013-02-26 19:55:53

+1

經過仔細觀察,我相信問題可能是Fault的Error屬性是一個錯誤數組。我會嘗試一些代碼,看看我能否得到這些值。 – 2013-02-26 20:04:29

+1

您可以通過遍歷錯誤數組來獲取錯誤的詳細信息。列表中的每個錯誤對象都具有以下屬性:代碼,細節,元素和消息。消息是用戶友好性最高的說明。知道是否有成功的某種方式仍然是非常有幫助的。你檢查Fault對象是什麼? ...或者如果項目對象不是什麼? – 2013-02-26 21:16:40

回答

2

我剛完成一個成功的批量請求。在上面提到的迭代代碼中循環遍歷響應項目,我使用下面的代碼來確定每個發票是否成功。

`If invcResponse.Fault is Nothing then 
    sStatus="OK" 
else 
    For each error in invcResponse.Fault.Error 
     sStatus=sStatus & oError.Message &", " 
    Next oError 
End If` 

這似乎與文檔和我得到的響應一致。