Pregunta

Ok, queriendo base de datos de una pequeña biblioteca.

Sólo he tenido una experiencia limitada con las bases de datos, y ninguno con la consulta de un servidor web.

Voy a querer recuperar información como el título, editor, tal vez autor, descripción la forma más sencilla que puedo pensar dooing esto les está mirando hacia arriba a través del ISBN.

Me he encontrado isbndb.com antes, pero la API para acceder parece bastante complejo.

Me pregunto cómo debo ir haciendo esto.

¿Fue útil?

Solución

Recientemente tuve que hacer exactamente esto, ya que nuestra biblioteca indexados a efectos del seguro. A continuación se muestra el código de la clase VBA Pirateé juntos:

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

Obtener una clave de API, pegar el código anterior (con la llave) en un nuevo módulo de clase en el editor de VBA (Insertar> Módulo de clase) y el nombre del "ISBN" módulo. También es necesario agregar una referencia a "Microsoft XML" en el editor de VBA (Herramientas> Referencias)

Se puede probar que funciona con el siguiente fragmento de código en un módulo VBA normales:

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

A continuación, sólo tiene que escribir "testlookup" en la ventana inmediata (Ver> Ventana Inmediato). Usted debe ver una respuesta de:

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

isbnDB puede devolver más de los datos que se acumulan en la clase anterior, leer la referencia de la API aquí: http: / /isbndb.com/docs/api/ y adaptar la clase a sus necesidades.

He encontrado este artículo muy útil para explicar cómo utilizar xmlhttp desde dentro de acceso: http://www.15seconds.com/issue/991125.htm

Las páginas de MSDN en XML DOM Métodos y Objeto XMLHttpRequest también eran útiles (porque soy un nuevo usuario sólo puedo publicar dos enlaces activos, que tendrá que reemplazar los puntos en los siguientes URL):

Microsoft MSDN com / es-es / library / ms757828 (v = VS.85) .aspx

Microsoft MSDN com / es-es / library / ms535874 (v = vs.85) .aspx

Otros consejos

Esta es una respuesta incompleta, pero servirán para iniciar (no he trabajado con datos XML como el retorno).

Este código tiene lo básico:

  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 respuesta de la página web se encuentra en la propiedad .responseText del objeto XMLHTTP. La forma de proceso que está más allá de mí. Sé que uno de los gurús de grupos de noticias de acceso ha publicado un tutorial sobre el consumo de servicios web de acceso, pero no puedo localizarlo. Este artículo podría tener algo que ver con el tema:

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

La API ISBNdb.com parece simple. La siguiente petición debe recuperar la información que desea ... simplemente sustituya su clave de acceso para "yourkey" y el ISBN para "YourISBN".

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

La respuesta es XML que contiene información sobre el único libro cuyo ISBN que ha enviado.

Puede utilizar el XML MARC 21 de la Biblioteca del Congreso.

Hice lo mismo que usted, la construcción de una base de datos para alojar a mi biblioteca. Escaneado en el ISBN recoge los datos de esta URL http://z3950.loc.gov:7090/voyager? version = 1.1 y operación = searchRetrieve y consulta = YOUR_ISBN y MaximumRecords = 1

Los datos de respuesta a continuación se llena en un formulario con todos los datos. Usted no necesita una cuenta, esa URL.

La respuesta viene en XML (como se ha mencionado), y se puede analizar a partir de ahí el uso de cualquier idioma que desee (mi elección pasa a ser PHP).

¿Qué idioma se utiliza? Es necesario un programa / script para presentar un formulario en el que puede introducir el ISBN, lo que a continuación, obtener los datos de isbndb.com y poblar la base de datos. He utilizado el API un poco, pero no por algún tiempo, y es bastante sencillo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top