我有一个简单的 PHI restful 服务来执行 MYSQL 数据库的 CRUD 操作,并使用 Excel 工作簿作为 UI。
打开工作簿会触发对 api 的 GET 请求,该请求可以正常工作,并且当前数据显示在用户表单上。然后我控制允许用户更新和添加新记录。从服务器返回响应,我可以看到数据库已更新。
问题是,当我触发后续 GET 请求时,我只获得原始数据集,而没有对基础数据进行任何更改。
只有当我关闭 Excel 并重新打开工作簿时,我才能将新数据返回给我?
我已确保与 API 调用相关的所有变量内容在使用后都被销毁,并且包含数据的变量在调用之前被设置为空,因此表单不能填充“旧”数据。
我还在服务器端放置了调试消息,它只注册了初始 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 才返回新数据这一事实之外,一切似乎都在运行。
任何指点都感激不尽。编辑代码以便以正确的方式出现