Beiträge von broodaw

    Moin,


    ich hab ein Problem mit der Anbindung an Word. Die COM-Programmierung funktioniert eigentlich problemlos, aber vielleicht gibts da nen Zusammenhang.


    In meiner Datenbank kann der User Word-Textbausteine als OLE-Objekt einbinden. Beim Speichern werden diese gelöst und zusätzlich als Anhang im Dokument gespeichert. Ein Script erstellt dann aus Angaben des Benutzers über COM ein Worddokument aus den Bausteinen in der Datenbank. Dazu werden zunächst die Anhänge gelöst und über COM zusammengesetzt. Bei mir und den meisten Usern des Kunden funktioniert das reibungslos, bei einigen schmiert aber Notes während der Bearbeitung eines OLE-Objekts ab (Keine Rückmeldung); häufig ist dann ein kompletter Neustart erforderlich.


    Die automatisierte Erstellung des zusammengesetzten Word-Dokuments über COM und die Bearbeitung der OLE-Objekte haben nicht direkt etwas miteinander zu tun. Es kann aber sein, dass diese Prozesse von einem User direkt hintereinander ausgeführt werden. In der Terminate-Routine kill ich im Falle eines Abbruchs alle bestehenden COM-Objekte, was auch funktioniert.


    Ich hab gelesen, dass die Deaktivierung von FieldExchange in den Maskeneigenschaften helfen soll, aber Notes stürzt nach wie vor ab.


    Ich und Kunde verwenden Notes 5.0.11, Word 2000 & Word XP. Bei den Tests beim Kunden vor Ort verursachten die unterschiedlichen Word-Versionen keine Probleme.


    Hat einer von Euch ne Idee?

    Meiner Erfahrung nach müßte das Feld Principal eigentlich ausreichen. Versuch doch mal, AppendItemValue mit ReplaceItemValue zu ersetzen. In der Hilfe steht bei AppendItemValue nämlich folgendes:


    If the document already has an item called itemName$, AppendItemValue does not replace it. Instead, it creates another item of the same name, and gives it the value you specify.

    Hi,


    Du kannst in VB unter dem Menüpunkt Projekt-Verweise die Lotus Domino Objects miteinbinden, indem Du das Häkchen davor setzt. Danach stehen Dir in VB diese Objekte als COM-Objekte zur Verfügung. Ein kleiner Beispielcode:


    Private Sub Command1_Click()
    Dim objLNSession As New NotesSession

    Call objLNSession.Initialize
    MsgBox objLNSession.UserName

    End Sub


    So erzeugst Du eine NotesSession in VB. Die Methoden und Eigenschaften sind denen in LS sehr ähnlich. Du kannst allerdings nur Backend-Programmierung damit machen.

    Wenn das Dokument gespeichert werden soll, lass die Formel einfach durchlaufen. Ersetze also das @Return( @True ) einfach durch "". Das @Return sorgt in jedem Fall für einen Abbruch, egal, was Du zurücklieferst.


    oh, habs grade erst gesehn. man sollte erst ALLES lesen...

    Ich verwende für sowas immer ne Script-Bibliothek. Ich deklariere die globalen Werte im Declarations-Abschnitt und lese sie im Initialize-Event der Script-Bibliothek, z.B. aus einem Konfig-Dokument, ein. Diese Bibl. dann einfach mit "Use" einbinden und schon kannst Du die Variablen in jedem Script der Datenbank verwenden.

    Führst du mit dem Feld Enddatum Berechnungen durch, während dieses Feld leer ist? Dann würde ich das vorher abfragen und nur berechnen wenn Enddatum != "" ist.

    Also wenn Du verhindern willst, dass das Dokument geschlossen wird, Continue = false setzen. Wenn Du das Dokument erneut öffnen willst, würd ich an die EditDocument-Methode das Backend-Handle als 2. Parameter von dem uidoc übergeben. Vielleicht experimentierst Du auch mit dem newInstance-Parameter.


    Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )

    Ja, geht. Eindimensionale Arrays kannst Du als Typ Variant zurückgeben (Rückgabewert nicht dimensionieren, sprich: ohne Klammern), bei Lists und mehrdimensionalen Array hatte ich zunächst Probleme. Du kannst in solch einem Fall aber den Rückgabewert mit an die Funktion als Parameter übergeben.

    Wie wäre es denn, wenn du ein neues Dialog-Dokument im Speicher erstelltst, dieses an die Methode DialogBox übergibst und die eingegebenen Werte darin aufnimmst. Die Schaltflächen kannst Du dann so programmieren, dass die Werte von diesem Backend-Dok ins Frontend-Dok übertragen werden.

    Richtext-Felder lassen sich per Formel leider nicht so einfach verbergen. Meistens verhält es sich so, dass das Richtext-Feld immer die Anzeigeschaften behält, die es bei der Erstellung des Dokuments hatte; sogar wenn man die Hideformel in der Maske ändert...


    Ich benutze daher immer Abschnitte, in die ich jeweils ein Richtext-Feld packe. Optisch ist das zwar nich sehr ansprechend, aber so läßt sich das Feld verbergen.

    Hi,


    ein Kunde von uns hat versehentlich in seiner Mail-Replik alle Dokumente gelöscht. Die Löschungen wurden auch in die Original-Maildatenbank übertragen und nu is alles wech. Die Datenbank wurde noch nicht komprimiert und hat auch noch ihre Originalgröße. Wenn man sich das Ding im Hexeditor anguckt sieht man auch, dass alle Mails noch enthalten sind, aber in keiner Ansicht mehr dargestellt werden.


    Hab gehört, dass man eine solche Wiederherstellung mit der C API machen kann. Hab die Doku auch schon mehrmals durchsucht, aber bisher nichts gefunden.


    Hat jemand ne Idee, mit welchen Methoden man das machen kann? Nehme auch gern auch Alternativvorschläge entgegen...