Question

Ok, je vouloir base de données d'une petite bibliothèque.

Je n'ai eu une expérience limitée avec des bases de données, et aucune avec l'interrogation d'un serveur Web.

Je vais vouloir récupérer des informations comme le titre, éditeur, peut-être l'auteur, la description la façon la plus simple que je peux penser à dooing cela leur recherche via l'ISBN.

Je suis tombé sur isbndb.com avant, mais l'API pour accéder il semble assez complexe.

Je me demande comment je devrais aller sur le faire.

Était-ce utile?

La solution

J'ai eu récemment de faire exactement ce que nous avons indexé notre bibliothèque à des fins d'assurance. Voici le code de la classe I vba piraté ensemble:

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

Obtenir une clé API, collez le code ci-dessus (avec votre clé) dans un nouveau module de classe dans l'éditeur VBA (Insérer-> Module de classe) et nommez le module « isbn ». Vous devez également ajouter une référence à « Microsoft XML » dans l'éditeur VBA (Outils-> Références)

Vous pouvez tester cela fonctionne avec l'extrait de code ci-dessous dans un module de vba normal:

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

Alors il suffit de taper « testlookup » dans la fenêtre immédiate (Affichage-> Fenêtre immédiate). Vous devriez voir une réponse:

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

isbnDB peut revenir plus les données que je collectionne dans la classe ci-dessus, lisez la référence API ici: http: / /isbndb.com/docs/api/ et d'adapter la classe à vos besoins.

J'ai trouvé cet article très utile pour expliquer comment utiliser XMLHTTP à partir de l'accès: http://www.15seconds.com/issue/991125.htm

Les pages msdn sur les méthodes DOM XML et Object XMLHttpRequest ont également été utiles (parce que je suis un nouvel utilisateur, je ne peux pas poster deux liens actifs, vous devrez remplacer les points dans les urls ci-dessous):

msdn microsoft com / fr-fr / bibliothèque / ms757828 (v = VS.85) .aspx

msdn microsoft com / fr-fr / bibliothèque / ms535874 (v = vs.85) .aspx

Autres conseils

Ceci est une réponse incomplète, mais il devrait vous aider à démarrer (je ne l'ai pas travaillé avec des données XML en retour).

Ce code a les bases:

  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

La réponse de la page Web est la propriété .responseText de l'objet XMLHTTP. Comment vous processus qui est au-delà de moi. Je sais que l'un des gourous de newsgroup Access a publié un tutoriel sur l'utilisation de services Web à partir d'Access, mais je ne peux pas le localiser. Cet article pourrait avoir quelque chose à voir avec la question:

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

L'API ISBNdb.com semble simple. La requête suivante devrait récupérer les informations que vous voulez ... Il suffit de remplacer votre clé d'accès pour « YourKey » et l'ISBN pour « YourISBN ».

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

La réponse est XML qui contient des informations sur le seul livre dont ISBN que vous avez soumis.

Vous pouvez utiliser le XML MARC21 de la Bibliothèque du Congrès.

Je l'ai fait la même chose que vous, la construction d'une base de données à la maison ma bibliothèque. Numérisation dans l'ISBN recueille les données de cette URL http://z3950.loc.gov:7090/voyager? version = 1.1 & fonctionnement = searchRetrieve & query = YOUR_ISBN & MaximumRecords = 1

Les données de réponse remplit alors un formulaire avec toutes les données. Vous n'avez pas besoin un compte, cette URL.

La réponse est en XML (comme mentionné), et vous pouvez analyser à partir de là en utilisant la langue que vous voulez (mon choix se trouve être PHP).

Quelle langue utilisez-vous? Vous avez besoin d'un programme / script pour présenter un formulaire où vous pouvez entrer le numéro ISBN, qui serait alors obtenir les données de isbndb.com et alimenter la base de données. Je l'ai utilisé l'API un peu, mais pas pendant un certain temps, et il est assez simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top