2015-02-23 69 views
-2

我想从我写的Excel宏连接到一个Cloudant数据库。该宏本质上需要在特定字段中查找另一个字段上的数据。例如:对于ID =“2”,返回字段“名称”中的数据。有谁知道这是可能的吗?通过Excel连接到Cloudant宏

谢谢。

编辑:我已经发布了一个回答我自己的问题。我发布的答案从指定的数据库获取所有文档。从这里你可以查询等获得你正在寻找的具体数据。您还可以使用Excel宏JSON解析器,找到here来帮助对数据进行排序。我使用的Base64Encoder可以找到here

回答

1

如果有人搜索到这个,我想我会上传对这个问题的实际回复(近一个月后),而不仅仅是“是的,这是可能的”。

由于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 

或类似的东西。

我希望这可以帮助任何其他人可能想要做这样的事情。

2

From the documentation:

到Cloudant所有请求都在网上,这意味着可以在网上发言的任何系统,可以对Cloudant说话。 Cloudant的所有特定于语言的库都只是提供一些便利和语言细节的包装程序,可帮助您使用简单的API。

现在,你的问题:

有谁知道/这怎么可能?

VBA能够发送和接收HTTP请求,这可以使用Excel(或任何其他可以运行VBA的应用程序)。

+0

你有例子吗?我不确定如何做到这一点。 – Julie 2015-02-23 21:08:25

+0

我从来没有听说过Cloudant,直到你今天问这个问题,所以我不能在这方面为你提供任何具体的帮助。你究竟在问什么?因为你的编辑表明你正在寻找某个人从头开始教你一切。你已经知道VBA了吗? – 2015-02-23 21:22:48

+0

我可以将整个宏写入实际的数据库连接。我编写了大量宏,但从未连接到Cloudant数据库。我已经看过连接到SQL数据库的一些[示例](http://stackoverflow.com/questions/1120674/accessing-sql-database-in-excel-vba),但我不知道如何与此关联到Cloudant,我不知道该怎么办为ID =“2”,因为我不熟悉数据库的东西,所以返回字段“Name”中的数据。 – Julie 2015-02-23 21:39:51