Entwicklung einer Kontaktdatenverwaltung

    • Offizieller Beitrag

    ne brauchst Du nicht, ich würde das Auslesen der Spalten so eintragen.
    Bei leere Zellen wird in die Felder ein leerer String geschrieben.


    Code
    ...
    letzte_Zeile = 1
    For Zeile = 1 To letzte_Zeile
       Set doc = New NotesDocument(db) ' Dokument erstellen'
       doc.Form = "Person" ' Maske festlegen'
       doc.FeldA = xlApp.Cells(Zeile, 1).Value ' Zelle in Spalte A auslesen und in Feld FeldA schreiben'
       doc.FeldB = xlApp.Cells(Zeile, 2).Value ' Zelle in Spalte B auslesen und in Feld FeldB schreiben'
       doc.Save True, true, true  ' Dokument speichern '
    Next
    ...


    Für FeldA und FeldB musst Du noch die Feldnamen eintragen, die gefüllt werden sollen.
    Beispiel:
    Feldname: FirtsName
    Inhalt: Vorname


    Gruß
    Dirk

  • ich habe in der tabelle so ca 60 spalten.


    mal so fürs verständniss.
    ---
    doc.FeldA = xlApp.Cells(Zeile, 1).Value ' Zelle in Spalte A auslesen und in Feld FeldA schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 2).Value ' Zelle in Spalte B auslesen und in Feld FeldB schreiben'
    ---
    warum hab ich hier zwei zeilen quellcode?
    warum hier einmal (zeile,1) und dann nochmal (zeile,2)


    mach ich das nur um denen einen namen zu geben?


    die erste zeile der exceltabelle wäre ja die kopfzeile in der die namen für die einzelnen spalten aufgelisten wären.
    also spalte1=firmenname spalte2=firmenadresse spalte3=telefonnummer usw...
    kann man sich da nicht die bezeichnung rausziehen?


    und in den zeilenweise gesehen sind es ja dann die kompletten daten zu einem kontakt.

    • Offizieller Beitrag

    es wird Zeile und Spalte übergeben. D.h. es wird erst Zeile 1 und Spalte 1 ausgelesen und als nächstes Zeile 1 und Spalte 2 - also zellenweise.


    Alle Zellen einer Zeile werden in ein Dokument geschrieben. Wird die Zeile gewechselt, wird ein neues Dokument erzeugt und wieder die einzelnen Zellen ...


    Den Inhalt der einzelnen Zellen musst Du natürlich in verschiedene Felder im Dokument eintragen. Von alleine passiert dies nicht, Du musst es schon in Deinem Code angeben, was geschehen soll.


    Die Bezeichnung kannst Du schon raus ziehen, aber im Notes haben die Felder andere Namen.


    Gruß
    Dirk

  • das heißt für mich jetzt das ich für jede spalte eine zeile quellcode in der for-schleife benötige und dort dann auch die namen vergebe für die einzelnen spalten.


    mit dem namen kann ich die nachher auch sicher ansprechen.
    also dokumentname und name des attrikuts wie zb name.


    vielen dank das hat mich schon mal ein stück weiter gebracht.

    • Offizieller Beitrag

    Schau Dir mal die Maske an. In der Maske gibt es Felder. Du schreibst mit doc.Feldname dann den Wert in das Feld.


    Beispiel:
    das Feld, in das der Vorname rein geschrieben werden muss, ist Firstname. Die Code-Zeile ist dann:
    doc.Firstname = xlApp.Cells(Zeile, 1).Value ' Zelle in Spalte A auslesen und in Feld FeldA schreiben'
    Falls der Vorname in Spalte 1 steht.


    Gruß
    Dirk

  • ist das mit den spalten nun korrekt?



    ---
    doc.FeldA = xlApp.Cells(Zeile, 1).Value ' Zelle in Spalte A auslesen und in Feld FeldA schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 2).Value ' Zelle in Spalte B auslesen und in Feld FeldB schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 3).Value ' Zelle in Spalte C auslesen und in Feld FeldC schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 4).Value ' Zelle in Spalte D auslesen und in Feld FeldD schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 5).Value ' Zelle in Spalte E auslesen und in Feld FeldE schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 6).Value ' Zelle in Spalte F auslesen und in Feld FeldF schreiben'
    .
    .
    .
    doc.FeldFA = xlApp.Cells(Zeile, 60).Value ' Zelle in Spalte FA auslesen und in Feld FeldFA schreiben'
    ---

    • Offizieller Beitrag

    naja wenn Du das Feld noch ändert, in welches Du die Werte schreibst ...

    Code
    doc.FeldA = xlApp.Cells(Zeile, 1).Value ' Zelle in Spalte A auslesen und in Feld FeldA schreiben'
    doc.FeldB = xlApp.Cells(Zeile, 2).Value ' Zelle in Spalte B auslesen und in Feld FeldB schreiben'
    doc.FeldC = xlApp.Cells(Zeile, 3).Value ' Zelle in Spalte C auslesen und in Feld FeldC schreiben'
    doc.FeldD = xlApp.Cells(Zeile, 4).Value ' Zelle in Spalte D auslesen und in Feld FeldD schreiben'
    doc.FeldE = xlApp.Cells(Zeile, 5).Value ' Zelle in Spalte E auslesen und in Feld FeldE schreiben'
    doc.FeldF = xlApp.Cells(Zeile, 6).Value ' Zelle in Spalte F auslesen und in Feld FeldF schreiben'
    .
    .
    .
    doc.FeldFA = xlApp.Cells(Zeile, 60).Value ' Zelle in Spalte FA auslesen und in Feld FeldFA schreiben'


    Gruß
    Dirk

  • liegt es vielleicht daran das ich den feldern lange namen gegeben habe?


    zb:


    doc.Abteilung1_Mitarbeiter_Name = xlApp.Cells(Zeile, 1).Value ' Zelle in Spalte A auslesen und in Feld "Abteilung1_Mitarbeiter_Name" schreiben'


    oder muss ich auf groß und kleinschreibung achten?

  • gross und kleinschreibung beachten ist nie verkehrt


    wenn du hier keine Raterunde veranstalten willst (und dafür ordentliche Preise aussetzt), solltest du deinen Code posten und verraten, an welcher Stelle der Debugger rausspringt ....


  • -----------



    hab halt alles so benannt wie es in der Exceltabelle war.
    für die Eindeutigkeit. ;)


    der fehler kommt erst bei starten des agents


    %edit
    Code in Tags gesetzt /diali

    • Offizieller Beitrag

    schalte mal den Debugger ein (Menü Datei - Extras -...). Starte den Agenten neu, klicke im Debugger Fortfahren. Bei einem Fehler öffnet sich dann der Debugger und es wird die Zeile markiert, in der der Fehler aufgetreten ist.


    Die kommentare kannst Du in Deinem Code weglassen, hatte ich nur am Anfang drin, damit Du eine Hilfe hast. Wenn Du dann noch den Code in Tags ([ code][/code] - Leerzeichen beim ersten Tag musst Du weg lassen) schreibst, dann lässt der sich noch richtig gut lesen. Habs mal in Deinem Beitrag noch gemacht.


    Gruß
    Dirk

  • Code
    doc.Thermo-Hersteller = xlApp.Cells(Zeile, 101).Value
     doc.BP-Hersteller = xlApp.Cells(Zeile, 102).Value


    an den beiden Zeilen lag es.
    und zwar hab ich den "-" in "_" umgeändert dann ging es.


    Das Problem ist nun das es in meiner Ansicht immernoch nicht angezeigt wird.


    deswegen füge ich noch ein paar scrennshots bei vielleicht ist da ja ne einstellung falsch.

    • Offizieller Beitrag

    na Du legst neue Felder in den Dokumenten an. Du solltest die Felder verwenden, die in der Maske drin sind.


    Ansonsten musst Du die Maske und alle Ansichten umbauen.


    Gruß
    Dirk

    • Offizieller Beitrag

    ne auf dem Screenshot nicht aber in Deinem Code.


    doc.Feldname ...


    Feldname musst Du noch durch die entsprechenden Felder ersetzen. Die Felder findest Du, indem die die Maske im Designer öffnest und die Feldnamen in Deinen Code übernimmst.


    Dann hast Du noch Felder, die es in der Adress-DB nicht gibt, die kannst Du wie gehabt anlegen. Danach musst Du noch die Maske um die benötigten Felder erweitern, damit Du die Felder später editieren kannst.


    Die Felder, die noch in der Ansicht / den Ansichten sichtbar sein sollen, musst Du noch als Spalte in der Ansicht einbauen.


    Gruß
    Dirk

  • Ich glaube um das Umändern komme ich nicht herum.
    Die Ansicht "AnzeigeDB" hab ich mir gebastelt um zu gucken ob alles anständig importiert wurde.


    Ich brauche ja viel mehr Felder als im Adressbuch vorhanden sind.
    Ich hab beim anzeigen der Dokumente(Kontakte) gedacht nur ein paar Felder anzeigen zu lassen so wie es im orginalen Adressbuch ist und wenn ich dann einen neuen Kontakt erstelle oder einen vorhandenen bearbeite das ich dann viele tabs habe für den einen Kontakt.
    Wie zb Allgemeines mit Namen Adresse und Telefonnummer des Krankenhauses.
    Und dann halt für alle Unterabteilungen wie zb Chirurgie Innere usw mit jeweils ein paar Daten.

    • Offizieller Beitrag

    Da würde ich für jede Abteilung ein Dokument machen und als Kategorie und Firma das Krankenhaus angeben. Eventuell noch die Abteilung als Unterkategorie benutzen ...



    Gruß
    Dirk