MS Access Loop 更新停留在第一条记录上的网页

MS Access Loop to update Web Pages stuck on first record

Access 2016:代码有效,非常棒!但是它只循环第一条记录。我花了 2 天 moving/adding 循环代码但没有成功。

当我让它工作时:Browser = False。我打算添加一个计数器来查看更新过程。

另外,如果 eBay 的服务器不能足够快地处理数据,我可能需要添加一个循环暂停?

代码:(我漏掉了几行...但主要代码很好)

Private Sub ReviseSKUAll_Click()
Dim btnUpdate As MSHTML.HTMLInputElement
Dim rst As DAO.Recordset
Dim dbs As DAO.Database
Dim strSQL As String
Dim intI As Integer
Dim skuNumber As Object
Dim IE As Object
Set dbs = CurrentDb
'-------------------------------------------------------------------------
------------------------------------------
'Begin Loop
strSQL = "SELECT Inventory.[Item ID] FROM Inventory"
Set rst = dbs.OpenRecordset(strSQL, dbOpenDynaset)
'If the recordset is empty, exit.
If rst.EOF Then Exit Sub
intI = intI + 1
 'intI = 1
 rst.MoveLast
 rst.MoveFirst
 With rst
Do Until .EOF
'-------------------------------------------------------------------------
'--------------------------------------------
Set IE = CreateObject("InternetExplorer.Application")
With IE
    .top = 0
    .Left = 0
    .Height = 1000
    .Width = 1250
    .Visible = True
    .Navigate " ""

Do While .Busy Or Not .ReadyState = 4: DoEvents: Loop
Do Until .Document.ReadyState = "complete": DoEvents: Loop

 Set AllHyperlinks = IE.Document.getElementsByTagName("A")
   For Each hyper_link In AllHyperlinks
   If hyper_link.innerText = "editpane_skuNumber" Then
      hyper_link.Click
   Exit For
   End If
   Next
  'eBays Page Sku info
  '">


 Call .Document.getElementById("editpane_skuNumber").setAttribute("value", 
 (Nz([CustomLabelCombine]) & "   " & (Nz("Location" & "   " & [Location]) 
     & "    " & (Nz("Bin" & " " & [Bin])))))
  Set AllHyperlinks = IE.Document.getElementsByTagName("A")
  Set AllHyperlinks = IE.Document.getElementsByTagName("A")
  For Each hyper_link In AllHyperlinks
  If hyper_link.innerText = "pbtn" Then
     hyper_link.Click
  Exit For
  End If
  Next
  End With

  With IE.Document
  'eBays Update Listing Button Push
  '<input class="pbtn" type="button" value="Update listing" fn="pub">
  Set elems = .getElementsByTagName("input")
  For Each e In elems
  If (e.getAttribute("value") = "Update listing") Then
      e.Click

  Exit For
  End If
  Next e
  IE.Quit
Set IE = Nothing
   'eBays Close Listing Button Push
   '<input class="pbtn" type="button" value="Close" fn="clsRv">
   '----------------------------------------------------------------------

  'End Loop
   rst.MoveNext
   End With
   Loop
   End With
   '----------------------------------------------------------------------
   End Sub

我在这里检查了你的代码,它看起来应该毫无问题地循环遍历 rst RecordSet 变量。我什至创建了一个新的数据库应用程序,创建了一个名为 "Inventory" 的 table 并给它一个名为“[Item ID]”的字段,然后将上面的代码剪切并粘贴到按钮的点击事件中一个表格,我似乎能够 运行 通过整个 Do Until .EOF 循环没有问题!?!

然而,这里显然没有提供完整的代码来测试它,因为上面的代码没有显示 rst 记录集变量中每个单独的 [Item ID] 记录发生了什么。此外,IE 的 Navigate URL 丢失了,因此当我测试这段代码时,我不确定我是否在做与您完全相同的事情。但是,根据我在 Access 中的测试,当您在整个 Do Until .EOF 循环的底部调用 rst.MoveNext 时,它确实会循环遍历 Inventory table 中的所有记录。因此,在没有更多信息或完整代码的情况下,我想到了几件事:

  1. 是否有可能是您在此处某处的代码中遇到错误导致此代码中断整个 Do Until 循环 and/or 子?例如,如果您调用了 SetWarnings = false(在之前的子偶数中)并且遇到错误,您将不会在此处看到错误消息并且代码将静默失败,因为警告已关闭。

  2. 否则,我怀疑导致问题的原因是此处未提供的缺失代码。您始终可以创建一个新的子程序,并一次剪切和粘贴代码位,以准确找出此错误实际发生的位置。如果您不想在此处提供完整代码,那将是我的下一步。

无论如何,我希望这一切都有意义并且对你有所帮助。但是,如果您对这个答案有任何疑问,请随时给我留言或在这里发表评论,我会尽力提供帮助!