我有一个简单的PHI RESTful服务,可以在一个Excel工作簿作为UI的情况下在MYSQL数据库中执行CRUD操作。
打开工作簿会向api发出一个GET请求,该请求运行正常,并且当前数据显示在用户表单上。然后,我具有允许用户更新和添加新记录的控件。从服务器返回的响应,我可以看到数据库已更新。
问题在于,当我触发后续的GET请求时,我只会获得原始数据集,而对基础数据没有任何更改。
仅当我关闭Excel并重新打开工作簿时,我才将新数据返回给我吗?
我已确保与API调用相关的所有变量内容在使用后均被销毁,并且包含数据的变量在调用之前未设置为no,以使表单无法填充“旧”数据。
我还在服务器端放置了调试消息,并且它仅注册初始GET。尽管在调试器中逐步执行了VBA方面的请求,但GET请求似乎并未到达我的服务器。
我还通过在浏览器中调用页面来测试服务器,并且可以在其中看到带有新数据的JSON。
Sub getData()
Dim ws As Worksheet
Dim jsonText As String, sUrl As String, response As String
Dim xmlHttp As New MSXML2.XMLHTTP60
Dim JSON As Dictionary
Dim i As Long
Dim Item As Object
Dim comp As Dictionary
Set var = Nothing
Set JSON = Nothing
response = ""
sUrl = "http://xxxxxxxxxxxxxxxxxxxxxxxx"
With xmlHttp
.Open "GET", sUrl, False
.Send
End With
response = xmlHttp.ResponseText
Debug.Print response
Set JSON = JsonConverter.ParseJson(response)
ReDim var(JSON("records").Count, 5)
i = 0
For Each comp In JSON("records")
var(i, 0) = comp("CompId")
var(i, 1) = comp("CompName")
var(i, 2) = comp("Address1")
var(i, 3) = comp("Address2")
var(i, 4) = comp("Address3")
var(i, 5) = comp("PostCode")
i = i + 1
Next
Set xmlHttp = Nothing
Debug.Print "finished"
End Sub
无错误消息。除了新数据直到我重新打开Excel才返回之外,一切似乎都在起作用。
任何指针都将受到感激。 代码已编辑,可以正确显示