Daten aus Excel in DB importieren

  • Hallo!


    Ich bin ein ziemlicher Neuling im NotesDesigner und habe mal ein paar Fragen an euch:


    Kann man Daten aus einem .xls File in eine Datenbank importieren?
    Wenn ja, wie sieht der zugehörige Source Code aus?
    Ich wollte das ganze mit einem Agenten laufen lassen, der mir dann täglich Daten in die DB importiert.
    Es soll aber nicht jede einzelne Zeile in einen einzelnen Datensatz in der Ansicht importiert werden, sonderm jedesmal für einen Datei einen Datensatz in der Ansicht.


    Wie muss ich die Maske konfigurieren, damit das für ein bestimmtes Excel-File funzt?


    Vielen Dank schon mal im Voraus

  • mit OLE würde es funktionieren.

    Code
    1. Set xlApp = CreateObject("Excel.Application")
    2. xlapp.Visible = True ' Excel wird angezeigt
    3. xlApp.Workbooks.Open "D:\test.xls" ' Datei öffnen
    4. xlApp.Sheets("Tab 1").Select ' Springe in die Tabelle "Tab 1"
    5. For Zeile = 1 To 25 ' lese Zeile 1 bis 25
    6. For Spalte = 1 To 10 ' lese Spalte A bis J
    7. Zelleninhalt = xlApp.Cells( Zeile, Spalte).Value ' schreibe wert in Variable Zelleninhalt
    8. Next
    9. Next


    Anstelle die Zellen in einen Variable einzulesen, kannst Du Felder in Dokumenten füllen.


    Nachteil: Auf der Maschine, auf der der Import läuft muss Excel installiert sein.


    Reichts oder brauchst Du noch mehr Infos?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Nachtrag:
    xlApp.Close ' beendet Excel


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Wie sind Deine Datensätze inder Excel-Datei organisiert?


    Ein Datensatz pro Zeile, pro Spalte, pro Tab oder pro Excel-Datei?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • In dem Beispiel wird pro Excel-Zeile ein Datensatz (NotesDocument) angelegt.


    Gruß
    Dirk


    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Notes gibt mir nachdem ich deinen Quellcode angepasst habe folgende Fehlermeldung:


    Variant does not contain an object



    Bericht:


    Agent 'Import' wurde am 13.07.2005 13:51:55 gestartet
    Bearbeitet alle Dokumente in der Datenbank: insgesamt 0
    0 Dokumente gefunden, die die Suchkriterien erfüllen
    LotusScript Code ausgeführt
    Agent 'Import' wurde am 13.07.2005 13:53:21 beendet



    Was nun?

  • dann schalte mal den Debugger ein (Menü Datei - Extras - debug LotusScript) und sage in welcher Zeile der Fehler auftritt.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • In folgender Zeile passiert der Fehler


    ---> Set doc = New NotesDocument (db)


    Oder muss ich für db was eintragen, ich hatte den Namen meiner DB eingetragen (ohne Pfadangabe), aber mit Format (.nsf)

  • da musst Du nichts eintragen.
    In der Zeile "set db = session.CurrentDatabase" wird die aktuelle DB als Objekt zugewiesen.


    Füge mal vor der For-Schleife folgende Zeilen ein:
    If Not db.isopen Then
    MsgBox "DB konnte nicht geöffnet werden"
    Exit Sub
    End If


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Der Designer hatte eben schon beim speichern in der Zeile


    ---> Set doc = New NotesDocument(db) gemosert.


    --> Daten wurden aufgrund von Fehlern im Script nicht gespeichert



    aber du hast das ja oben als Variable gesetzt! verstehe auch nicht warum er das motzt.

  • Variant? als NotesDatabase und NotesDocument!


    Dim db as NotesDatabase
    dim doc as NotesDocument


    Habe das Script, so wie es unten steht in einen LotusScript Action reingepackt und lässt sich speicher.


    Mmmhhh jetzt wird es schwierig ohne über Deine Schulter zu schauen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • ok habe Dim db as NotesDatabase dim doc as NotesDocument
    noch eingefügt und dann hat er mir auch keine Fehlermeldung mehr ausgegeben, aber nachdem import waren zwar zwei Datensätze in der Ansicht, aber deren Maske war leer!


    Was nun?

  • hast Du die Zeile doc.Form = "..." angepasst und Deinen MaskenNamen eventuell Alias eingetragen?


    Hast Du die Zeilen doc.Feldname1 = ... den text Feldname1 durch Deinen Feldnamen ersetzt?


    Schau mal das Dokument über die Eigenschaften an und dann das Feld Form.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Morgen!


    Wie bekomme ich denn die Excel Tabelle komplett in einen Datensatz in der Ansicht, da er jetzt jede Zeile als einzelnen ds interpretiert. Ist das möglich.....?

  • indem Du in der nächsten Zeile kein neues Dokument anlegst sondern die Zellen aus der 2. Zeile mit in das 1. Dokument schreibst.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein