質問

[OK]を、私は小さな図書館のデータベースに欠けてます。

私は限られたデータベースと経験、およびWebサーバからの照会でどれだけ持っていた。

私は、タイトル、出版社、多分作者、説明などの情報を取得するつもりです 私はこれをdooingの考えることができる最も簡単な方法は、ISBNを経由してそれらを探しています。

私は前にisbndb.com渡って来ているが、それをアクセスするためのAPIは、かなり複雑なようです。

私は私がこれをやって行くべきか迷っています。

役に立ちましたか?

解決

私は最近、我々は保険の目的のために私たちのライブラリをインデックス化と正確にこれをしなければなりませんでした。以下は、私が一緒にハッキング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エディタ(ツール - >参照)での「Microsoft XML」への参照を追加する必要があります

あなたはそれが通常の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 /ライブラリ/ ms757828(V = VS.85).aspxの

MSDNのMicrosoft COM / EN-US /ライブラリ/ ms535874(V = VS.85).aspxの

他のヒント

(私はリターンとして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

のウェブページからの応答はXMLHTTPオブジェクトの.responseTextプロパティです。どのようにそれは私を超えているプロセス。私は、Accessニュースグループの達人の一つは、AccessからWebサービスを消費するのチュートリアルを公開していることを知っているが、私はそれを見つけることができません。この記事では問題とは何かを持っているかもしれません。

http://support.microsoft.com/kb/285329/en-us

ISBNdb.comのAPIはシンプルに見えます。必要な情報を取得する必要があり、次の要求が...ちょうど「YourKey」と「YourISBN」のISBNについては、アクセスキーを置き換えます。

https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN 

応答は、ISBNあなたが提出した、単一の書籍についての情報を含むXMLです。

あなたは、米国議会図書館からMARC21 XMLを使用することができます。

私は自分のライブラリーを収容するためのデータベースを構築し、あなたと同じことをしました。 ISBNでのスキャンは、このURLからデータを収集します http://z3950.loc.gov:7090/voyager?バージョン= 1.1&オペレーション= searchRetrieve&クエリ= YOUR_ISBN&maximumRecords = 1

の応答データは、全てのデータを使用してフォームに記入します。あなたはただそのURL、アカウントは必要ありません。

応答は、(前述のように)XMLに来て、あなたは(私の選択は、PHPであることを起こる)好きな言語使用して、そこから解析することができます。

どのような言語を使用していますか?あなたはその後、isbndb.comからデータを取得し、データベースに投入うISBNを入力することができますフォームを提示するプログラム/スクリプトを必要としています。私はAPI少し使用ではなく、いくつかの時間のために、それは非常に簡単だしました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top