我想從我寫的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