Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Abfragen und Aktualisieren von Excel-Daten mit ADO von ASP

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
195951 How To Query and Update Excel Data Using ADO From ASP
Zusammenfassung
Dieser Artikel beschreibt, wie Sie Informationen in einem Excel-Arbeitsblatt mit ActiveX Data Objects (ADO) von einer Active Server Pages (ASP)-Seite abfragen und aktualisieren können. Außerdem werden in diesem Artikel die mit diesem Anwendungstyp verbundenen Einschränkungen beschrieben.

Wichtig: ASP/ADO-Anwendungen unterstützen zwar den Zugriff durch mehrere Benutzer, ein Excel-Arbeitsblatt jedoch nicht. Daher unterstützt diese Methode der Abfrage und Aktualisierung von Informationen nicht den gleichzeitigen Zugriff durch mehrere Benutzer.
Weitere Informationen
Verwenden Sie für diese Beispielanwendung den Microsoft ODBC-Treiber für Excel, um auf die Daten in Ihrem Excel-Arbeitsblatt zuzugreifen. Erstellen Sie eine Tabelle, um auf die Daten zuzugreifen, indem Sie einen benannten Bereich in Ihrem Excel-Arbeitsblatt einrichten.

Anleitung zum Erstellen der Beispielanwendung

  • Erstellen Sie die Excel-Datei "ADOTest.xls" mit den folgenden Daten in Blatt1:

    Spalte1Spalte2Spalte3
    rr this15
    bbtest20
    eeworks25

    Hinweis: Wenn eine Spalte in Ihrem Excel-Arbeitsblatt sowohl Text als auch Zahlen enthält, kann der Excel ODBC-Treiber nicht korrekt interpretieren, welchen Datentyp die Spalte aufweisen soll. Stellen Sie daher sicher, dass alle Zellen in einer Spalte den gleichen Datentyp aufweisen. Wenn nicht jede Zelle in einer Spalte den gleichen Datentyp aufweist oder die Datentypen "Text" und "Allgemein" gemischt sind, können die folgenden drei Fehler auftreten (sinngemäß):
    1. Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e21'
      Die Anforderungs-Eigenschaften können von diesem ODBC-Treiber nicht unterstützt werden.
    2. Fehler '80004005' bei Microsoft OLE DB-Provider für ODBC-Treiber
      Die Abfrage ist nicht aktualisierbar, weil sie keine durchsuchbaren Spalten als erfolgversprechenden Schlüssel enthält. (The query is not updateable because it contains no searchable columns to use as a hopeful key.)
    3. Fehler '80004005' bei Microsoft OLE DB-Provider für ODBC-Treiber
      Abfragebasierte Aktualisierung fehlgeschlagen. Die zu aktualisierende Zeile konnte nicht gefunden werden. (Query based update failed. The row to update could not be found.)
  • Erstellen Sie den benannten Bereich "myRange1" in Ihrem Arbeitsblatt:

    1. Markieren Sie die Zeile(n) und Spalte(n), in denen sich Ihre Daten befinden.
    2. Zeigen Sie im Menü Einfügen auf Name, und klicken Sie auf Definieren.
    3. Geben Sie den Namen "myRange1" als Namen für den benannten Bereich ein.
    4. Klicken Sie auf OK.
    Der benannte Bereich "myRange1" enthält die folgenden Daten:

    Spalte1Spalte2Spalte3
    rr this15
    bbtest20
    eeworks25


    Hinweis: ADO geht davon aus, dass die erste Zeile in einer Excel-Abfrage die Spaltenüberschriften enthält. Daher muss der benannte Bereich die Spaltenüberschriften enthalten. Dieses Verhalten unterscheidet sich von DAO.

    Hinweis: Spaltenüberschriften können keine Zahl sein. Der Excel-Treiber kann die Überschriften dann nicht interpretieren und gibt stattdessen einen Zellbezug zurück. Beispielsweise würde die Spaltenüberschrift "F1" falsch interpretiert werden.
  • Erstellen Sie einen ODBC System-Datenquellennamen (Data Source Name, DSN), der auf die Datei "ADOTest.xls" zeigt.
    1. Öffnen Sie in der Systemsteuerung den ODBC-Administrator.
    2. Klicken Sie auf der Registerkarte System-DSN auf Hinzufügen.
    3. Wählen Sie Microsoft Excel-Treiber (*.xls) aus, und klicken Sie auf Fertig stellen. Wenn diese Option nicht vorhanden ist, müssen Sie den Microsoft ODBC-Treiber für Excel über Excel Setup installieren.
    4. Wählen Sie "ADOExcel" als Datenquellenname.
    5. Stellen Sie sicher, dass die Version auf die korrekte Version von Excel gesetzt ist.
    6. Klicken Sie auf Arbeitsmappe auswählen, wählen Sie die Datei "ADOTest.xls" aus, und klicken Sie auf OK.
    7. Klicken Sie auf die Schaltfläche Optionen>>, und deaktivieren Sie das Kontrollkästchen Schreibgeschützt.
    8. Klicken Sie auf OK und anschließend erneut auf OK.
  • Setzen Sie die Berechtigungen für die Datei "ADOTest.xls".
Wenn der Zugriff auf Ihre ASP-Seite anonym erfolgt, müssen Sie sicherstellen, dass das Anonyme Konto (IUSR_<Computername>) zumindest Schreib-/Lesezugriff (RW) auf das Arbeitsblatt hat. Wenn Sie Informationen von dem Arbeitsblatt löschen wollen, müssen Sie die entsprechenden Berechtigungen erteilen.

Wenn der Zugriff auf Ihre ASP-Seite authentifiziert erfolgen soll, müssen Sie sicherstellen, dass alle Benutzer, die auf Ihre Anwendung zugreifen, über die entsprechenden Berechtigungen verfügen.

Hinweis: Wenn Sie nicht die entsprechenden Berechtigungen für das Arbeitsblatt setzen, wird eine ähnliche Fehlermeldung wie die folgende angezeigt:

Fehler '80004005' bei Microsoft OLE DB-Provider für ODBC-Treiber

[Microsoft][ODBC Excel-Treiber] Das Microsoft Jet-Datenbankmodul kann die Datei '(unbekannt)' nicht öffnen. Sie ist bereits von einem anderen Benutzer exklusiv geöffnet, oder Sie benötigen eine Berechtigung, um die Daten lesen zu können.
  1. Erstellen Sie eine neue ASP-Seite, und fügen Sie den folgenden Code ein:
          <!-- Begin ASP Source Code -->      <%@ LANGUAGE="VBSCRIPT" %>      <%        Set objConn = Server.CreateObject("ADODB.Connection")        objConn.Open "ADOExcel"        Set objRS = Server.CreateObject("ADODB.Recordset")        objRS.ActiveConnection = objConn        objRS.CursorType = 3                    'Static cursor.        objRS.LockType = 2                      'Pessimistic Lock.        objRS.Source = "Select * from myRange1"        objRS.Open   %>   <br>   <%      Response.Write("Original Data")      'Printing out original spreadsheet headings and values.      'Note that the first recordset does not have a "value" property      'just a "name" property.  This will spit out the column headings.      Response.Write("<TABLE><TR>")      For X = 0 To objRS.Fields.Count - 1         Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")      Next      Response.Write("</TR>")      objRS.MoveFirst      While Not objRS.EOF         Response.Write("<TR>")         For X = 0 To objRS.Fields.Count - 1            Response.write("<TD>" & objRS.Fields.Item(X).Value)         Next         objRS.MoveNext         Response.Write("</TR>")      Wend      Response.Write("</TABLE>")      'The update is made here      objRS.MoveFirst      objRS.Fields(0).Value = "change"      objRS.Fields(1).Value = "look"      objRS.Fields(2).Value = "30"      objRS.Update      'Printing out spreadsheet headings and values after update.      Response.Write("<br>Data after the update")      Response.Write("<TABLE><TR>")      For X = 0 To objRS.Fields.Count - 1         Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")      Next      Response.Write("</TR>")      objRS.MoveFirst      While Not objRS.EOF         Response.Write("<TR>")         For X = 0 To objRS.Fields.Count - 1            Response.write("<TD>" & objRS.Fields.Item(X).Value)         Next         objRS.MoveNext         Response.Write("</TR>")      Wend      Response.Write("</TABLE>")      'ADO Object clean up.      objRS.Close      Set objRS = Nothing      objConn.Close      Set objConn = Nothing   %>   <!-- End ASP Source Code -->					
  2. Speichern und benennen Sie Ihre ASP-Seite, und zeigen Sie sie im Browser an. Sie hat folgenden Inhalt:
          Original Data:      Spalte1    Spalte2    Spalte3-----------------------------rr         this       30bb         test       20tt         works      25      Data after the update:      Spalte1    Spalte2    Spalte3-----------------------------change     look       30bb         test       20tt         works      25					
Hinweis: Es wurde eine Aktualisierung der ersten Zeile Ihres benannten Bereichs (nach den Überschriften) durchgeführt.
Informationsquellen
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
190195 Wie Extrahieren von Information aus Excel-Blatt mit DAO
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 195951 – Letzte Überarbeitung: 01/21/2006 18:12:00 – Revision: 5.1

Microsoft ActiveX Data Objects 1.0, Microsoft ActiveX Data Objects 1.5, Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5, Microsoft Active Server Pages 4.0, Microsoft Data Access Components 2.5

  • kbhowto kbmdacnosweep kbcode KB195951
Feedback
/html>