Frage

Ok, ich Datenbank eine kleine Bibliothek zu wollen.

Ich habe nur begrenzte Erfahrungen mit Datenbanken habe, und keiner mit von einem Webserver abgefragt wird.

Ich werde Informationen wie Titel abrufen wollen, Publisher, vielleicht Autor, Beschreibung der einfachste Weg, ich denke, kann dies von dooing sucht sie über die ISBN auf.

Ich bin gekommen, über isbndb.com vor, aber die API für den Zugriff auf sie scheint ziemlich komplex.

Ich frage mich, wie ich über das tun dies gehen sollte.

War es hilfreich?

Lösung

Vor kurzem hatte ich genau dies zu tun, wie wir unsere Bibliothek für Versicherungszwecke indiziert. Unten ist der Code der vba Klasse I zusammen gehackt:

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

einen API-Schlüssel holen Sie den obigen Code einfügen (mit Schlüssel) in eine neue Klasse-Modul im VBA-Editor (Einfügen-> Klassenmodul) und nennen Sie das Modul „isbn“. Sie müssen auch einen Verweis auf "Microsoft XML" in der VBA-Editor (Tools-> References)

hinzufügen

Sie können testen, funktioniert es mit dem Code-Snippet in einem normalen VBA-Modul:

Public Function testlookup()
    Dim book
    Set book = New isbn
    book.Lookup ("0007102968")
    Debug.Print book.Title
    Debug.Print book.PublisherText
End Function

Dann geben Sie einfach „testlookup“ in die unmittelbaren Fenster (View-> Direkt-Fenster). Sie sollten eine Antwort finden Sie unter:

The Times book of quotations
[Glasgow] : Times Books : 2000.

isbnDB kann mehr zurückgeben, als die Daten, die ich in der obigen Klasse sammeln, lesen Sie die API-Referenz hier: http: / /isbndb.com/docs/api/ und Schneider die Klasse auf Ihre Bedürfnisse.

Ich fand diesen Artikel sehr hilfreich bei der Erklärung, wie xmlhttp verwendet aus Zugang: http://www.15seconds.com/issue/991125.htm

Die Msdn Seiten auf XML-DOM-Methoden und XMLHttpRequest-Objekt waren auch nützlich (weil ich bin ein neuer Benutzer ich nur zwei aktive Links veröffentlichen können, müssen Sie die Punkte in den Urls unten ersetzen müssen):

Msdn microsoft com / en-us / library / ms757828 (v = VS.85) aspx

Msdn microsoft com / en-us / library / ms535874 (v = VS.85) aspx

Andere Tipps

Dies ist eine unvollständige Antwort, aber es sollte Sie erhalten begonnen (ich habe nicht mit XML-Daten als Rückkehr gearbeitet).

Dieser Code hat die Grundlagen:

  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

Die Antwort von der Webseite ist in der .responseText Eigenschaft des XMLHTTP Objekts. Wie verarbeiten Sie, dass ist mir schleierhaft. Ich weiß, dass eine der Access-Newsgroup-Gurus ein Tutorial auf raubend Web-Service von Access veröffentlicht hat, aber ich kann es nicht finden. Dieser Artikel könnte etwas mit dem Thema zu tun:

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

Die ISBNdb.com API sieht einfach aus. Die folgende Anforderung sollten die Informationen abrufen Sie wollen ... nur ersetzen Ihre Zugangsschlüssel für „YourKey“ und der ISBN für „YourISBN“.

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

Die Antwort ist XML, die Informationen über das einzelne Buch enthält, deren ISBN Sie vorgelegt.

Sie können die MARC21 XML aus der Library of Congress verwenden.

Ich habe die gleiche Sache wie Sie, den Aufbau einer Datenbank meiner Bibliothek zu beherbergen. Scannen in der ISBN sammelt die Daten aus dieser URL http://z3950.loc.gov:7090/voyager? version = 1.1 & Betrieb = searchRetrieve & query = YOUR_ISBN & Maximum = 1

Die Antwortdaten füllen dann in einer Form mit allen Daten. Sie haben kein Konto benötigen, nur, dass URL.

Die Antwort in XML kommt (wie bereits erwähnt), und Sie können von dort analysieren mit welcher Sprache Sie wollen (meine Wahl PHP passiert sein).

Was Sprache verwenden Sie? Sie benötigen ein Programm / Skript eine Form zu präsentieren, wo Sie die ISBN eingeben, der dann die Daten aus isbndb.com bekommen würde und die Datenbank füllen. Ich habe das API ein wenig verwendet, aber seit einiger Zeit nicht, und es ist ziemlich einfach.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top