DocLink per LS anhängen (Quelle ist jedoch andere DB)?

  • Hallo Zusammen, ich hoffe Ihr konntet Euch über die Feiertage etwas ausruhen und Zeit bei der Familie verbringen.


    So nun aber zu meiner Frage...
    Ich habe eine mini DB wo Seriennummern aufgenommen werden sollen (PumpNr.nsf). Dort sind durch Datenimport aus Excel auch bereits 2500 Dokument vorhanden, großteils mit einer Kundennummern (im Feld "KundenNr" auf der Maske "Nummerneintrag")vorhanden.


    In einer anderen Datenbank (CRNSuite\customer.nsf)haben wir korrespondierende Datensätze als Hauptdokument ("Akte").
    In dieser Datenbank habe ich auch bereits eine Ansicht sortiert nach Kundennummer (importAkten) - 1.Spalte ist die Kundennummer , 4. Spalte ist die DocID


    Ich möchte jetzt folgendes tun
    Ein periodischer Agent soll in der PumpNr.nsf (meiner Seriennummern DB) alle Dokumente kontrollieren, und wenn ein Feld KundenNr vorhanden ist in der Datenbank (customer.nsf) nach dem entsprechenden Dokument suchen und als DocLink in das Feld "KundenNr_Link" auf der Maske "Nummerneintrag" einfügen.


    Vielleicht hat ja jemand soetwas schon gemacht?


    Feldwert A aus Datenbank A in Db2 suchen und dann als Doclink zurückschreiben... Das braucht man doch sicherlich häufiger?


    Dummerweise haben meine Recherchen im Netz bisher nix zutage gefördert mit dem ich als DAU in LS klargekommen wäre;-)




    Danke für Eure Hilfe und einen Guten Rutsch
    Thomas

  • Hier musst du über ein RichTextFeld in dem Dokument arbeiten.
    Das Objekt NotesRichTextItem hat eine Eigenschaft AppendDocLink und erwartet als Parameter das Dokument auf den der Link erstellt werden soll.
    Sieh mal in der Script Hilfe unter AppendDocLink des NotesRichTextItems nach.

  • n'Abend!


    Versuch's mal mit folgendem Script:



    Was macht das Ding: es schnappt sich das erste Dokument einer angegebenen View der DB, in die die Doclinks reinsollen und liest das Feld mit der Nummer aus. Dann springt es in die andere DB, schnappt sich das erste Dokument einer angegebenen View und liest dort das Feld aus. Wenn die Feldwerte übereinstimmen, erstellt es den Link, ansonsten wird das nächste Dokument der anderen DB angepiekt. Wenn es alle Docs der anderen DB durchhat, wird in der eigenen DB das nächste Dokument genommen, das Feld ausgelesen, in die andere DB gesprungen usw. usf.


    Ich hab's nicht am lebenden Objekt ausprobiert, in Ermangelung entsprechender DBs; hab's nur mal schnell mit Bleistift und Papier geschrieben (ihr wisst schon: die altmodische, analoge Art, die man benutzte, als es noch keine Rechenknechte gab :D )...


    Ich geh mal schwer davon aus, das wird nicht auf Anhieb funzen wird, ist das erste Mal, dass ich "auf dem Trockenen" progge... Aber jetzt haste schon mal einen Start...


    Kannst ja Bescheid geben, was draus wurde und wo ich Fehler drin hatte.


    greetz
    RW

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Danke RockWilder
    / neid an +++
    ne klar, mal eben auf Papier geschrieben (staun!)
    das möcht ich auch wohl mal können
    / neid aus +++


    Ich kriege noch ne Fehlermeldung beim
    Call itemDieseDBDocLink.AppendDocLink(docDieAndereDB)
    und zwar beim Speichern des Script


    "Initialize 32: Not a member: APPENDDOCLINK!"
    --
    Hast Du da noch eine Idee?


    Danke und schon mal die besten Wünsche für 2004 für Deine Hilfe.
    Thomas

  • Zitat

    Ich kriege noch ne Fehlermeldung beim
    Call itemDieseDBDocLink.AppendDocLink(docDieAndereDB)
    und zwar beim Speichern des Script


    "Initialize 32: Not a member: APPENDDOCLINK!"
    --


    Da ist eine Variable verkehrt deklariert:

    Code
    Dim itemDieseDBDoclink As NotesItem
    sollt werden zu
    Dim itemDieseDBDoclink As NotesRichTextItem

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • Dann schau Dir mal die Hilfe dazu an. Es sollte mich wundern, wenn es unter 6.5 nicht mehr gehen sollte. Bis Version 6 war es auf jeden Fall noch mit drin ...

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • Yup, danke... Hatte Dein Reply für das DIM noch nicht gesehen!


    Jetzt kommt erstmal keine Fehlermeldung mehr.
    ich werd den Agenten dann jetzt gleich mal Testen


    Melde mich dann gleich nochmals
    TOM

  • Hi, Leute ich weiß ich nerve aber beim
    Agentenlauf kriege ich jetzt die Fehlermeldung
    "Variant does not contain an Object"
    Der Agent läuft auf alle neuen oder geänderten Dokumente. Auswahl ist die Verwendung einer bestimmten Maske.


    HILFE
    TOM

  • Moijns!


    lodsnods hat natürlich Recht, hätte ich eigentlich gleich drauf kommen können!


    Ich merk schon, bin zu sehr von modernen IDEs abhängig. Aber so eine Befehlsvervollständigung ist aber auch was praktisches...


    Und ich hab das echt auf dem Papier gemacht. Mach ich eigentlich fast immer so. Jedenfalls bei den meist gebrauchten Befehlen. Alle weiß ich auch nicht, aber bei sowas mach ich imemr einen Grobentwurf auf Papier. Da kann ich besser dran rumschmieren, etwas hinzukritzeln, wegstreichen, etc. Ist ne alte Marotte, so komm ich am Besten klar... Hat mich auch nur ne halbe Schachtel Zichten, 3 Bier und ne 3/4 Stunde Zeit gekostet. Wenn man allerdings auf Bier/h runterrechnet, würde das diesen Flüchtigkeitsfehler erklären :D


    greetz
    RW

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Zitat


    "Variant does not contain an Object"


    was sagt der debugger dazu? An welcher Stelle bekomsmt du den Fehler?

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Er findet entweder eine DB nicht (Dim dieseDB As New NotesDatabase("server", "DB.nsf") ist irgendwie nie "Nothing", auch wenn es die DB nicht gibt) oder eine Ansicht. Die Ansichten wurden ja nicht gecheckt (if view is nothing then ...).

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • Zitat


    lodsnods schrieb:
    Er findet entweder eine DB nicht (Dim dieseDB As New NotesDatabase("server", "DB.nsf") ist irgendwie nie "Nothing",


    Ja, gut, ich hoffe mal, er hat die entsprechenden Angaben angepasst. Aus der Fehlermeldung ist ja zu schließen, dass er die Variablennamen beibehalten hat. Das ist soweit nicht weiter tragisch, aber der Rest möchte schon angepasst sein...


    Zitat


    auch wenn es die DB nicht gibt) oder eine Ansicht. Die Ansichten wurden ja nicht gecheckt (if view is nothing then ...).


    stimmt, Fehlerbehandlung habe ich ganz bewusst nicht eingebaut. Dazu hatte ich keine Lust mehr, mir darum Gedanken zu machen. My bad!


    Mal sehn, ob ich heute noch Zeit und Lust habe, das Teil zu überarbeiten. Kann ich aber nicht verpsrechen...


    greetz
    RW

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • So Freunde, ich bin schon mal etwas weiter gekommen...


    Es waren noch einige Punkte drin aber die habe ich mit dem Debugger weitestgehend rausgeräumt...


    Zur Zeit hackt er bei dem Set Befehl für die Zuordnung auf das Richtextfeld ..
    Set itemDieseDBDocLink = docDieseDB.GetFirstItem("KundenNr_Link")
    'Bis hier läuft es durch, dann kriege ich die Meldung "Type mismatch.
    Daher habe ich itemDieseDBDocLink mal als Varriant deklariert.
    Jetzt kriege ich keine Fehlermeldung mehr aber ein DocLink wird nicht erzeugt!!!


    ' Muß ich abfragen da es das Feld schon gibt und mit Create newRichtextfield kriege ich dann ja eine Fehlermeldung
    ' Laut Notes Designer Hilfe notwendig
    If ( itemDieseDBDocLink.Type = RICHTEXT ) Then
    Call itemDieseDBDocLink.AppendDocLink (docDieAndereDB, dieAndereDb.Title)
    End If
    Call docDieseDB.Save(True, True)

  • Ich Poste Euch jetzt das Script wie es jetzt ist, vielleicht findet Ihr ja noch etwas.
    Das RT Feld für den DocLink gibt es schon auf der Maske, daher die Modifikationen.



    ich find das echt super das Ihr mir helft


    THOMAS

  • ... und ich finde echt super, wie Du uns hilfst :lol:.
    Berichtest von einer Fehlermeldung und verschweigst uns diese :lol:


    Da kann ich doch nur mals ins "Blaue" schießen und sagen, bau mal folgendes sinngemäß ein


    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.