2015-02-23 4 views
-2

Я хочу подключиться к базе данных Cloudant из макроса Excel, который я написал. Макрос по существу должен найти данные в определенном полевом поиске в другом поле. Пример: для ID = «2» вернуть данные в поле «Имя». Кто-нибудь знает, как это возможно?Подключиться к Cloudant через Excel Macro

Спасибо.

Редактировать: Я отправил ответ на свой вопрос. Ответ, который я разместил, получает все документы из указанной базы данных. Отсюда вы можете запросить и т. Д., Чтобы получить конкретные данные, которые вы ищете. Вы также можете использовать синтаксический анализатор excel macro JSON, найденный here, чтобы помочь сортировать данные. Используемый Base64Encoder можно найти here.

ответ

1

В случае, если кто-либо еще когда-либо ищет это, я решил, что я хочу загрузить фактический ответ на этот вопрос (почти месяц спустя), а не просто «да, это возможно».

Поскольку Cloudant требует Basic Auth, способ, которым я нашел, чтобы сделать это ниже:

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-запросы, ergo, это возможно с использованием Excel (или любого другого приложения, которое может запускать VBA).

+0

У вас есть пример? Я не знаю, как это сделать. – Julie

+0

Я никогда не слышал о Cloudant, пока вы не задали этот вопрос сегодня, поэтому я не смог бы помочь вам с какой-либо спецификой с этой целью. Что именно, вы спрашиваете сейчас? Потому что ваше редактирование подсказывает, что вы ищете кого-то, кто научит вас всему с нуля. Вы уже знаете VBA? –

+0

Я могу написать весь макрос в стороне от фактического подключения к базе данных. Я написал много макросов, но никогда не подключался к базе данных Cloudant. Я просмотрел некоторые [примеры] (http://stackoverflow.com/questions/1120674/accessing-sql-database-in-excel-vba) подключения к базе данных SQL, но я не знаю, как связать это для Cloudant, и я не знаю, как это сделать. Для ID = «2» верните данные в поле «Имя», потому что я не знаком с вещами базы данных. – Julie

Смежные вопросы