我想从我写的Excel宏连接到一个Cloudant数据库。该宏本质上需要在特定字段中查找另一个字段上的数据。例如:对于ID =“2”,返回字段“名称”中的数据。有谁知道这是可能的吗?通过Excel连接到Cloudant宏
谢谢。
编辑:我已经发布了一个回答我自己的问题。我发布的答案从指定的数据库获取所有文档。从这里你可以查询等获得你正在寻找的具体数据。您还可以使用Excel宏JSON解析器,找到here来帮助对数据进行排序。我使用的Base64Encoder可以找到here。
我想从我写的Excel宏连接到一个Cloudant数据库。该宏本质上需要在特定字段中查找另一个字段上的数据。例如:对于ID =“2”,返回字段“名称”中的数据。有谁知道这是可能的吗?通过Excel连接到Cloudant宏
谢谢。
编辑:我已经发布了一个回答我自己的问题。我发布的答案从指定的数据库获取所有文档。从这里你可以查询等获得你正在寻找的具体数据。您还可以使用Excel宏JSON解析器,找到here来帮助对数据进行排序。我使用的Base64Encoder可以找到here。
如果有人搜索到这个,我想我会上传对这个问题的实际回复(近一个月后),而不仅仅是“是的,这是可能的”。
由于Cloudant需要基本身份验证,我发现做到这一点的方法是如下:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Dim response As String
'Sameple URL: https://ibmcds.cloudant.com/sandbox/_all_docs
URL = "https://" + CloudantUsername + ".cloudant.com/" + DatabaseName + "/_all_docs"
With objHTTP
.Open "GET", URL, False
.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.SetRequestHeader "Content-Type", "application/json"
.SetRequestHeader "Accept", "application/json"
.SetRequestHeader "Authorization", "Basic " + Base64Encode(CloudantUsername + ":" + CloudantPassword)
.Send ("")
End With
response = objHTTP.responseText
在这个例子中,Base64Encode函数只是编码给定的字符串。你可以使用任何Base64编码器。
如果你想检查请求的状态,你可以使用:
If objHTTP.Status = 200 Then
response = objHTTP.responseText
MsgBox "This request is valid.", vbOKOnly
Else
MsgBox "This request is not valid.", vbOKOnly
End If
或类似的东西。
我希望这可以帮助任何其他人可能想要做这样的事情。
到Cloudant所有请求都在网上,这意味着可以在网上发言的任何系统,可以对Cloudant说话。 Cloudant的所有特定于语言的库都只是提供一些便利和语言细节的包装程序,可帮助您使用简单的API。
现在,你的问题:
有谁知道/这怎么可能?
VBA能够发送和接收HTTP请求,这可以使用Excel(或任何其他可以运行VBA的应用程序)。
你有例子吗?我不确定如何做到这一点。 – Julie 2015-02-23 21:08:25
我从来没有听说过Cloudant,直到你今天问这个问题,所以我不能在这方面为你提供任何具体的帮助。你究竟在问什么?因为你的编辑表明你正在寻找某个人从头开始教你一切。你已经知道VBA了吗? – 2015-02-23 21:22:48
我可以将整个宏写入实际的数据库连接。我编写了大量宏,但从未连接到Cloudant数据库。我已经看过连接到SQL数据库的一些[示例](http://stackoverflow.com/questions/1120674/accessing-sql-database-in-excel-vba),但我不知道如何与此关联到Cloudant,我不知道该怎么办为ID =“2”,因为我不熟悉数据库的东西,所以返回字段“Name”中的数据。 – Julie 2015-02-23 21:39:51