2016-10-27 36 views
1

我使用XML導入來填充一個電子表格來從雲端拉回事務。導入數據後,我需要將狀態更新爲「6」以指示Synched,並將其發送回服務。每個交易都有一個唯一的ID,我試圖填充,所以當我發佈時,它會選擇正確的記錄。VBA組XML元素在變量值的XML發佈

響應表示未發送的ID。 「無法找到要使用id更新的對象:無。」硬編碼字段似乎正常工作。當我運行調試時,SndID的值設置正確。

我用「+ SndID +」,這是我用我的XMLImport什麼(見下面的代碼用於設置變量)可變日期範圍,但得到相同的響應嘗試。

L2LConnect = "https://mycompany.clousdservice.com/api/1.0/spares/ 
auth=password&issued__gte=" + cYesterday + 
"&issued__lt=" + cToday + "&limit=1000&format=xml&site=1" 

任何有關如何將SndID的值設置爲該行的ID的想法?設置後我也嘗試發送StrData。

StrData = "&format=xml&site=1&id=" + SndID + 
"&status=6&closed=True&LastUpdatedBy=L2LSynch" 

其中返回相同的錯誤。 ID =無。

' RunUpdate Macro 
' 
    Dim myTable As Range 
    Dim rng1 As Range 
    Dim URL As String 
    Dim objHTTP As Object 
    Dim strResponse As String 
    Dim StrData As String 
    Dim SndID As String 


Sheets("XML Import").Select 
Set myTable = Sheets("XML Import").Range("Table2") 

For Each rng1 In myTable.Columns(11).Cells 
    SndID = rng1.Value 

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
URL = "https://mycompany.cloudservice.com/api/1.0/spares/ 
    auth=mypassword&format=xml&site=1" 
objHTTP.Open "POST", URL, False 
objHTTP.send 
"&format=xml&site=1&id=SndID&status=6 
&closed=True&LastUpdatedBy=L2LSynch" 
strResponse = objHTTP.responsetext 

MsgBox strResponse 
Next rng1 


End Sub 

謝謝!

回答

0

嘗試

objHTTP.send "format=xml&site=1&id=" & SndID & "&status=6" & _ 
      "&closed=True&LastUpdatedBy=L2LSynch" 

很好的做法,使用&和用於連接字符串不+

+0

謝謝,添。仍然得到同樣的迴應:<?XML版本=「1.0」編碼=「UTF-8」?>找不到對象ID爲更新:無

+0

你肯定在'SndID有一個值'? –

+0

當我在調試查看它表明:strData是: 「&站點= 1&ID = 36369&狀態= 6&閉合=真&LastUpdatedBy = L2LSynch」:字符串。以下是調試窗口中的其他一些值: :responseBody:<完成此操作所需的數據尚不可用。 :狀態:<此方法不能被調用,直到發送方法被調用 :文字:「FalseCould找不到對象ID爲更新:無」:字符串 :XML:?「<?XML版本=」 1.0" > 找不到對象ID爲更新:無

0

我接觸需要作爲URL,而不是查詢字符串的一部分要通過的提供者,ID(唯一密鑰):

For Each rng1 In myTable.Columns(11).Cells 
SndID = rng1.Value 
StrData = "status=6&closed=True" 

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
**URL = "https://mycompany.provider.com/api/1.0/spares/synchronize/ 
" & SndID & "/?auth=password&site=1&format=xml"** 
objHTTP.Open "POST", URL, True 
objHTTP.send StrData 

Next rng1 

結束子