Обновление привязки данных XML со смещением и лимитом - PullRequest
0 голосов
/ 19 марта 2019

У меня есть книга Excel XML, которая тянет ок.40 тысяч записей от одного из наших поставщиков облачных услуг.(На самом деле, некоторые из них, но в данный момент это моя главная проблема.) Я использую обновленные данные для сортировки, добавления столбца, затем сравниваю каждую строку с другой извлеченной таблицей из нашей ERP, затем отправляю XML POST для обновления.любые варианты предметов / количества.

Таблица XML настроена с API в качестве источника данных:

  https://us.them.com/api/1.0/billofmaterials/
   ?auth=supersecretpassword&limit=99999&format=xml

Я настроил карту в Excel, выбрав только поля, необходимые для сравнения.В VBA я вызываю следующее и могу затем обработать всю таблицу обновленных данных:

 ThisWorkbook.XmlMaps("L2LBOM").DataBinding.Refresh

Все было хорошо, это будет открываться и запускаться автоматически каждое утро через планировщик.

Вчера (18-го) мы получили уведомление, что 21-го числа мы будем ограничены извлечением 1000 записей за раз, то есть мне как-то придется переписать все мои источники данных и карты XML (?), Или рисунокспособ получить необходимое количество записей во что-то, что я могу обработать.

Поставщик сказал, что я могу сделать что-то вроде:

 https://us.them.com/api/1.0/billofmaterials/?auth=xxx&offset=0&limit=1000
 ...us.them.com.../?offset=1000&limit=1000
 ...us.them.com.../?offset=2000&limit=1000

И увеличивать, пока я не получу никаких записей.Проблема в том, что у меня есть XML, определенный в Excel как конкретная таблица и источник данных, чтобы собрать все записи в одну таблицу.

Означает ли это, что мне нужно создать отдельный источник данных / соединение и таблицу XML для каждого диапазона, затем проанализировать обязательные поля для каждого, затем объединить ~ 40 таблиц, прежде чем я смогу выполнить свои сортировки и сравнения данных и сделатьмои посты?

Я предполагаю, что HTTP POST не нужно будет изменять, так как я делаю один для каждой строки, которая соответствует критериям.Это текущий код для POST:

Set objHTTP = CreateObject("WinHttp.WinhttpRequest.5.1")
URL = 
 "https://us.them.com/api/1.0/billofmaterials/inbound_location_quantity_
  sync/?auth=supersecretpassword"
  objHTTP.Open "POST", URL, False

objHTTP.SetRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.Option(6) = True
objHTTP.Option(12) = True

 For Each RNG1 In mytable.Columns(9).Cells
   Check = IsNumeric(RNG1.Rows.Offset(0, -6))
 If Check Then
  Match = RNG1.Rows.Offset(0, -6).Value
 Else
  Match = 0
End If
If RNG1.Value <> "MOHTQ" And RNG1.Value <> Match Then
  Qty = RNG1.Value
  Locn = RNG1.Rows.Offset(0, -1)
  partnumber = RNG1.Rows.Offset(0, -5)
  Site = RNG1.Rows.Offset(0, -8)  
  StrData = "quantity=" & Qty & "&site=" & Site & "&format=xml
  &partnumber=" & partnumber & "&location=" & Locn & "" 
   objHTTP.send StrData
   objHTTP.waitForResponse
  End If
 Next
   Application.Goto Reference:="Select1"
 End Sub

Есть ли способ, возможно, создать динамическую карту XML и вызов Datasource / API на лету, который будет правильно увеличиваться?Мне потребовалась целая вечность, чтобы настроить эти различные XML-файлы (я также использую их в Power BI для перемещения запасов, спецификации деталей машин, информационных панелей и отчетов).

Само собой разумеется, я волнуюсь по поводу необходимости внести все эти изменения и проверить в течение следующих двух дней (ЛЮБИТЕ предварительное уведомление, данное нам этим провайдером).

Любые идеио том, как я мог бы добиться этого?

Заранее благодарю за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...