わかりました。小さなライブラリをデータベース化したいのですが。
私はデータベースの経験が限られており、Webサーバーからのクエリの経験はありません。
タイトル、出版社、おそらく著者、説明などの情報を取得したいと思います。これを行うために私が考えることができる最も簡単な方法は、ISBNを介してそれらを検索することです。
以前にisbndb.comに出くわしたことがありますが、それにアクセスするためのAPIはかなり複雑なようです。
どうすればいいのかしら。
わかりました。小さなライブラリをデータベース化したいのですが。
私はデータベースの経験が限られており、Webサーバーからのクエリの経験はありません。
タイトル、出版社、おそらく著者、説明などの情報を取得したいと思います。これを行うために私が考えることができる最も簡単な方法は、ISBNを介してそれらを検索することです。
以前にisbndb.comに出くわしたことがありますが、それにアクセスするためのAPIはかなり複雑なようです。
どうすればいいのかしら。
米国議会図書館のMARC21XMLを使用できます。
私はあなたと同じことをしました。私のライブラリを格納するデータベースを構築しました。ISBNでスキャンすると、このURLからデータが収集されます http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=YOUR_ISBN&maximumRecords=1
次に、応答データがすべてのデータをフォームに入力します。アカウントは必要ありません。そのURLだけが必要です。
応答は(前述のように)XMLで送信され、そこから任意の言語を使用して解析できます(私の選択はたまたまPHPです)。
ISBNdb.comAPIはシンプルに見えます。次のリクエストでは、必要な情報を取得する必要があります...「YourKey」をアクセスキーに、「YourISBN」をISBNに置き換えてください。
https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN
応答は、ISBNを送信した1冊の本に関する情報を含むXMLです。
これは不完全な答えですが、開始する必要があります(XMLデータをリターンとして使用していません)。
このコードの基本は次のとおりです。
Dim oHttp As Object
Set oHttp = CreateObject("Microsoft.XMLHTTP")
oHttp.Open "GET", "https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN", False
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHttp.Send vbNullString
Debug.Print oHttp.responseText
Webページからの応答は、XMLHTTPオブジェクトの.responseTextプロパティにあります。それをどのように処理するかは私を超えています。Accessニュースグループの達人の1人が、AccessからWebサービスを利用するためのチュートリアルを公開していることは知っていますが、見つけることができません。この記事はこの問題と関係があるかもしれません:
私は最近、保険の目的でライブラリにインデックスを付けたので、まさにこれを行わなければなりませんでした。以下は、私が一緒にハッキングしたvbaクラスのコードです。
Option Compare Database
dim BookTitle As String
dim BookTitleLong As String
dim BookAuthorsText As String
dim BookPublisherText As String
dim BookSummary As String
dim BookNotes As String
dim accessKey As String
Private Sub Class_Initialize()
'Your isbnDB access key'
accessKey = "PUT ACCESSKEY HERE"
End Sub
Property Get Title() As String
Title = BookTitle
End Property
Property Get TitleLong() As String
TitleLong = BookTitleLong
End Property
Property Get AuthorsText() As String
AuthorsText = BookAuthorsText
End Property
Property Get PublisherText() As String
PublisherText = BookPublisherText
End Property
Property Get Summary() As String
Summary = BookSummary
End Property
Property Get Notes() As String
Notes = BookNotes
End Property
Public Function Lookup(isbn As String) As Boolean
Lookup = False
Dim xmlhttp
Set xmlhttp = CreateObject("MSXML2.xmlhttp")
xmlhttp.Open "GET", "https://isbndb.com/api/books.xml?access_key=" & accessKey & "&results=texts&index1=isbn&value1=" & isbn, False
xmlhttp.send
'Debug.Print "Response: " & xmlhttp.responseXML.XML'
Dim xmldoc
Set xmldoc = CreateObject("Microsoft.XMLDOM")
xmldoc.async = False
'Note: the ResponseXml property parses the server's response, responsetext doesn't
xmldoc.loadXML (xmlhttp.responseXML.XML)
If (xmldoc.selectSingleNode("//BookList").getAttribute("total_results") = 0) Then
MsgBox "Invalid ISBN or not in database"
Exit Function
End If
If (xmldoc.selectSingleNode("//BookList").getAttribute("total_results") > 1) Then
MsgBox "Caution, got more than one result!"
Exit Function
End If
BookTitle = xmldoc.selectSingleNode("//BookData/Title").Text
BookTitleLong = xmldoc.selectSingleNode("//BookData/TitleLong").Text
BookAuthorsText = xmldoc.selectSingleNode("//BookData/AuthorsText").Text
BookPublisherText = xmldoc.selectSingleNode("//BookData/PublisherText").Text
BookNotes = xmldoc.selectSingleNode("//BookData/Notes").Text
BookSummary = xmldoc.selectSingleNode("//BookData/Summary").Text
Lookup = True
End Function
APIキーを取得し、上記のコードを(キーとともに)VBAエディターの新しいクラスモジュールに貼り付け([挿入]-> [クラスモジュール])、モジュールに「isbn」という名前を付けます。また、VBAエディターで「MicrosoftXML」への参照を追加する必要があります([ツール]-> [参照])。
通常のvbaモジュールで以下のコードスニペットで動作することをテストできます。
Public Function testlookup()
Dim book
Set book = New isbn
book.Lookup ("0007102968")
Debug.Print book.Title
Debug.Print book.PublisherText
End Function
次に、イミディエイトウィンドウ([表示]-> [イミディエイトウィンドウ])に「testlookup」と入力します。次の応答が表示されます。
The Times book of quotations
[Glasgow] : Times Books : 2000.
isbnDBは、上記のクラスで収集したデータよりも多くを返すことができます。ここでAPIリファレンスを読んでください:http://isbndb.com/docs/api/そしてニーズに合わせてクラスを調整してください。
この記事は、アクセス内からxmlhttpを使用する方法を説明するのに非常に役立ちました: http ://www.15seconds.com/issue/991125.htm
XML DOMメソッドとXMLHttpRequestオブジェクトのmsdnページも役に立ちました(私は新しいユーザーなので、2つのアクティブなリンクしか投稿できないため、以下のURLのドットを置き換える必要があります)。
msdn microsoft com / en-us / library / ms757828(v = VS.85).aspx
msdn microsoft com / en-us / library / ms535874(v = vs.85).aspx
どの言語を使用していますか?ISBNを入力できるフォームを表示するには、プログラム/スクリプトが必要です。ISBNは、isbndb.comからデータを取得し、データベースにデータを入力します。私はAPIを少し使用しましたが、しばらくは使用していません。それは非常に簡単です。