1

我有一个简单的 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 才返回新数据这一事实之外,一切似乎都在运行。

任何指点都感激不尽。编辑代码以便以正确的方式出现

4

0 回答 0