Beiträge von Alexander28

    Ich Versuchs nochmal! Es muss doch jemand eine Idee haben!? Huh


    Ich habe in einer MailIn-Datenbank einen periodischen Agenten, der eingehende E-Mails in Supportcalls wandelt. Hierfür liest er aus den eingegangenen E-Mails einige Felder aus und legt anschließend neue Supportcalldokumente an und überträgt dorthin die ausgelesenen Informationen. Das klappt soweit auch wunderbar. Lediglich beim Feld BODY habe ich ein Problem. Das Feld wird nicht in den Supportcall in das Zielfeld "SC_Langbeschreibung" übertragen. Das phänomenale daran ist, dass es einwandfrei funktioniert, wenn ich den periodischen Agenten im Frontend von Hand starte. Lasse ich den Agenten allerdings vom Server ausführen, bleibt das Feld schlicht leer. Das Problem ist erst aufgetreten, nachdem der Server auf 8.5.1 FP2 umgestellt wurde. Vorher war es ein 7er Server und es gab nie Probleme.


    Hat jemand eine Idee woran das liegen kann?


    Dim zielitem As NotesRichTextItem
    Dim newcallbody As NotesRichTextItem
    Set newcallbody = New NotesRichtextItem(newcall,"SC_Langbeschreibung")


    Forall i In doc.Items
    If i.Name = "Body" Then

    If ( i.Type = RICHTEXT ) Then

    'wenn BODY ein RTF ist alles inkl. Anhänge in den neuen Call kopieren
    Set zielitem = i
    Call newcallbody.AppendRTItem( zielitem )

    Else

    'wenn Body kein RTF dann nur das Textfeld kopieren
    Call newcallbody.AppendText( doc.GetItemValue( i.name )(0) )

    End If

    End If
    End Forall


    Es werden auch keinerlei Fehlermeldungen auf der Konsole ausgegeben. Die Protokolldatei gibt ebenfalls nichts her. Eine Fehlerabfangroutine ist implementiert. Es muss also eine andere Ursache geben.

    vollkommen richtig. Diese Situation hatte ich bisher allerdings nicht. Ist für die Klärung dieses Problem aber offensichtlich auch nicht relevant, da ich in der Originalmail über die Feldeigenschaften vor der Mail-Verarbeitung überprüft habe ob es sich um ein RichText-Feld handelt. Dies ist bei meinem Testmails definitiv der Fall, zumindest zeigen die Feldeigenschaften Rich Text an. Insofern muss das ursächliche Problem also woanders liegen.

    eigentlich sind dort keine doppelten Überprüfungen drin. Ich überprüfe am Anfang nur ob es sich um Rich Text handelt und falls nicht, behandele ich den Inhalt des Feldes als normalen Text. Der vollständige Abschnitt des Skriptes sieht so aus:


    bodytest ist NotesItem
    newcallbody ist RTItem


    If ( bodytest.Type = RICHTEXT ) Then
    Forall item In doc.Items
    If item.Name = "Body" Then
    Call newcallbody.AppendRTItem( item )
    End If
    End Forall

    Else

    'wenn Body kein RT dann nur das Textfeld kopieren
    Forall item In doc.Items
    If item.Name = "Body" Then
    Call newcallbody.AppendText( doc.GetItemValue( item.name )(0) )
    End If
    End Forall

    'Kontrolle ob Anhänge dran sind
    If doc.HasEmbedded Then
    Const Macro = | @AttachmentNames |
    ergebnis = Evaluate(Macro, doc)
    Dim sFileNames As String

    'Falls ja, dann diese nach TEMP lösen und von dort in den neuen Call ins Feld Anhänge
    Forall x In ergebnis
    Set object = doc.GetAttachment( x )
    sFileNames = Environ("Temp") & "\" & object.Source
    Call object.ExtractFile(sFileNames)
    Set obj = newcallattach.EmbedObject(EMBED_ATTACHMENT, "", sFileNames, "Anhang")
    Kill sFileNames
    End Forall
    End If

    End If

    ich habe die Deklarationen nun schon mehrfach geändert. Ich hatte im Original


    Dim scquelle As NotesItem
    Dim scziel As NotesRichTextItem


    scquelle kann ja nicht NotesRichTextItem sein, da ich dies vorher ja gar nicht weiß. oder wie oder was ???


    das Verhalten, egal wie ich deklariere ist immer identisch. Das Zielfeld bleibt schlicht leer. Zwischenzeitlich hatte ich es sogar mal mit der Funktion


    Call scquelle.CopyItemToDocument( newcall, "SC_Langbeschreibung" )


    versucht. Auch dies funktionierte nicht bei Verarbeitung durch den Server. Habe ich den Agenten wiederum von Hand gestartet, klappt es wunderbar. somit kann ich schon mal ausschließen dass das Problem mit AppendRTItem zu tun hat. ich werde das Gefühl nicht los dass der Server das Quellfeld (scquelle), also das Body-Feld aus der E-Mail, aus welchem Grund auch immer nicht verarbeiten kann.

    Nun wird die ganze Sache noch verrückter. Inzwischen ist es mir gelungen auf einer weiteren Server-Umgebung das Ganze zum laufen zu bringen. Ohne besonderes zutun. Der Server versioniert ebenfalls mit 8.5.1 FP2. Aber dieser Server verarbeitet die Maileingänge völlig unproblematisch und die Felder werden so übertragen wie es früher auf den 7er Servern auch der Fall war.


    Dies lässt mich nun vermuten, das es unter Umständen eine Frage der Konfiguration des Servers ist, dass die Body-Felder nicht verarbeitet werden. Kann das sein?

    das ist ja das Problem. Es gibt keinerlei Fehlermeldung, weder in der Protokolldatei des Servers noch sonst irgendwo. Als Fehlerabfang- Routine habe ich


    ErrorHandler:
    Print "Maileingänge, Prozedur: 'Hauptcall', Fehler in Zeile: " & Erl & " (Error" & Str(Err) & ": " & Error$ & ")"
    Resume Next

    Also ich bin inzwischen am verzweifeln und habe nun auch keine Idee mehr woran es liegen könnte. Kurze Problembeschreibung: Ich habe in einer MailInDatenbank einen Agenten, der eingehende E-Mails verarbeitet und in so genannte Supportcalls wandelt. Hierzu liest er einige Felder aus der Originalmail aus und kopiert diese in eine neue erstellten Supportcalls hinein. Das klappt alles wunderbar und bis zum Server 7 gab es auch nie Probleme. Jetzt habe ich allerdings einen 8.5.1 FP2 im Einsatz und es ergibt sich folgendes Problem. Bei dem rüberkopieren des Body-Feldes aus der E-Mail in den Supportcall kommt es zwar nicht zu einem Fehler, das Rich Text-Feld im Supportcall (SC_Langbeschreibung) bleibt allerdings leer bzw. es steht lediglich die Zeile "Callinhalt:" drin und ich weiß nicht weshalb. Folgenden Code habe ich verwendet:


    Dim scquelle As Variant
    Dim scziel As Variant
    Set scquelle = doc.GetFirstItem( "Body" ) 'doc ist Originalmail
    Set scziel = newcall.CreateRichTextItem( "SC_Langbeschreibung" )
    Call scziel.AppendText("Callinhalt:")
    Call scziel.AddNewLine( 1 )


    'hier soll nun der Mailinhalt eingefügt werden
    If ( scquelle.Type = RICHTEXT ) Then
    Forall item In doc.Items
    If item.Name = "Body" Then
    Call scziel.AppendRTItem( item )
    End If
    End Forall
    End if


    Call scziel.Compact


    und nun das absolute Phänomen: wenn ich diesen Agenten im Frontend manuell starte funktioniert es tadellos und der Inhalt des Body-Feldes aus der Originalmail wird übertragen. Startet der Agent nun allerdings selbst periodisch durch den Server bleibt das Feld bis auf den Einführungsstring "Callinhalt:" leer. Das ist mir ein absolutes Rätsel. Auf dem 7er Servern funktioniert es problemlos, auch periodisch.


    Hat vielleicht irgendeiner einen Gedankenansatz wo das Problem liegen könnte? Mir qualmt inzwischen die Birne. ich habe inzwischen irgendwie das Gefühl dass AppendRTItem vom Server nicht richtig verarbeitet wird oder ich irgendetwas übersehe.

    Ich habe eine Abwesenheitsdatenbank entwickelt, in der Mitarbeiter ihre Urlaube eigenständig eintragen können. Außerdem ist es möglich, Tagestermine (mit Uhrzeitangabe), Krankheiten und Seminarteilnahmen zu hinterlegen. Im Grunde verwaltet die Datenbank also sämtliche Abwesenheiten eines Mitarbeiters. Für jeden Mitarbeiter existiert ein so genanntes Stammdokument. Hier sind alle seine Eckdaten inklusive des Vorgesetzten und des Vertreters gespeichert. Außerdem ist er einer eindeutigen Abteilung innerhalb des Unternehmens zugeordnet.


    Nun möchte ich ein neues Modul für diese Datenbank entwickeln lassen, welches eine Personaleinsatzplanung ermöglicht. Ich stelle mir im Grunde folgendes vor:
    Zum einen habe ich ja den Gesamtbestand aller existierenden Mitarbeiter wegen der Stammdokumente. Dann habe ich einen Teilbestand aller abwesenden Mitarbeiter für das aktuelle Jahr wegen der gespeicherten Abwesenheitsdokumente. Daraus ergibt sich ein Differenzbestand. Das sind dann die Mitarbeiter die anwesend sind. Jeder Tag des Jahres wird einzeln ausgewertet. Die Personaleinsatzplanung soll so arbeiten, dass der Ersteller immer angeben muss für welchen Zeitraum (Datum von) und (Datum bis) er die Planung machen möchte.


    Die Anforderung besteht nun darin, dem Personaleinsatzplaner eine höchst komfortable Möglichkeit zur Verfügung zu stellen, mit der er die verbleibenden noch anwesenden Mitarbeiter des gewählten Zeitraumes, einteilen kann. Er soll also idealerweise per Drag-and-drop die Möglichkeit haben einen Mitarbeiter von einer Abteilung in eine andere zu verschieben. Der auf diese Weise entstehende Personaleinsatzplan soll dann möglichst übersichtlich ausdruckbar beziehungsweise auf dem Bildschirm darstellbar sein. Infrage kommt hier eine Grafik, eine Kalenderdarstellung und eventuell auch eine tabellarische Darstellung. Vielleicht gibt es ja weitere Möglichkeiten?
    Ziel soll es also sein, dass alle berechtigten Personen im Grunde einen möglichst übersichtlichen Eindruck davon bekommen wann wer in welcher Abteilung eingeteilt ist - ein Personaleinsatzplan halt.


    Ich suche nun Entwickler, die sich zutrauen ein derartiges Modul zu entwickeln. Benutzerkomfort steht hier an erster Stelle. Bezüglich der Entwicklungskosten sollten wir uns telefonisch auseinandersetzen. Die Urlaubsdatenbank stelle ich selbstverständlich in offene Gestaltung zur Verfügung sowie alle notwendigen Informationen bezüglich der Ansichten, Masken usw..


    Das Modul sollte unter Lotus Notes 7 verwendbar sein. Gegebenenfalls können wir uns auch auf Lotus Notes 8.0 einigen, aber auf keinen Fall noch aktueller, da die meisten meiner Kunden die neusten Notesversionen noch nicht einsetzen.


    Mailkontakt bitte an: beduw@live.de

    Also, es war definitiv so, dass Forall-Schleife das Feld nur einmal anlistete, obwohl es in den Dokumenten-Eigenschaften zweimal dargestellt wurde. Einmal mit der Doppeleintrag ID 0 und einmal mit der 1. Fakt ist auch, dass das Feld mit der 0 leer war und das mit der einst den eigentlichen Inhalt hatte. wenn ich das Dokument geöffnet und manuell einmal nachgespeichert habe, war das Feld nur noch einmal vorhanden.


    Ich habe nun allerdings eine andere Lösung gefunden; Es gibt eine Funktion namens Compact, mit der die Aktualisierung dieses RichText-Feldes möglich ist. Dies führte zum gewünschten Ergebnis. Das Feld war anschließend nur noch einmal vorhanden und auch der Inhalt war trotz des Compactes in Ordnung.


    Call rtitem.Compact

    Hallo, ich habe über eine Funktion von einer E-Mail das Body-Feld in ein neues RichTextfeld eines zweiten Dokumentes übertragen. Der Inhalt des Original-Feldes ist relativ übersichtlich und besteht nur aus wenigen Zeichen. Es handelt sich allerdings um ein Rich Textfeld. Wenn ich nun das neue Dokument anschaue, sehe ich über die Feldeigenschaften, dass das neue Rich Textfeld zweimal vorhanden ist. Einmal ohne Wert (Datenlänge 0) und einmal mit dem Inhalt des OriginalFeldes des anderen Dokumentes.


    Aus welchem Grund legt die Skriptroutine ein und dasselbe Feld zweimal ein? Außerdem ist für mich nun wichtig herauszubekommen, wie ich das zweite Feld, welches ja keinen Wert enthält, wieder entfernen kann.


    Mit einer Forall-Schleife über die Bezeichnung des Feldes (item.Name) habe ich es bereits versucht, leider ohne Erfolg.


    Es wurden die Doppeleintrags-ID 0 und 1 vergeben. Ich hoffe das war verständlich und es kann mir jemand helfen.


    Vielen Dank im Voraus.