Beiträge von Jokeman

    Hallo,


    in einer Datenbank werden Dokumente mit einer Reihe von Betragsfelder vom Benutzer gefüllt. Die Dokumente sind mit Leser- und Autorenfeldern geschützt. In einer Ansicht werden dann wie gewollt nur die Dokumente des jeweiligen Benutzers angezeigt. In mehreren Spalten stehen die Betragsfelder.


    Nun ist die neue Anforderung, die Betragsfelder zu summieren. An sich kein Problem, nur enthält die Ansicht ja alle Dokumente, daher werden in die Summe auch die fremden, unsichtbaren Dokumente einbezogen. Das ist natürlich nicht gewünscht, daher wollte ich per Selektion die Dokumente auf den jeweiligen Benutzer einschränken. Und das bekomme ich nicht hin.


    Im Dokument gibt es ein Feld "author" als Leserfeld, das beim Anlegen mit @Author gefüllt wird. In meiner Ansicht verwende ich dann folgende Selektionsformel:

    SQL
    SELECT (Form = "sale") & (docstat = "active") & ( author = @UserName)


    Ich dachte es würde damit funktionieren, tut es aber nicht. Hat jemand bitte einen Tipp für mich?


    Danke im voraus!

    Wir nutzen die iQSuite von Group Technologies. Da kann ich diverse Jobs definieren, eben z.B. auch dass in Abhängigkeit von einer "wahren Bedingungen" eine Aktivität ausgelöst wird. Aber im Grunde geht es weniger um die iQSuite oder die auszulösende Aktivität. Ich möchte nur erreichen, dass die o.g. Bedingung halt oft genug wahr wird.

    Ok, dann versuche ich mich anders auszudrücken. Nehmen wir an, ich möchte den Mail-Verkehr, der über den Notes-Server läuft, in Stichproben überprüfen. Dazu muss ich eine Stichprobe aus allen gesendeten Mails generieren. Bei jeder Mail wird also die o.a. Formel geprüft. Ist sie wahr, gehört die Mail zur Stichprobe, ist sie falsch, gehört die Mail nicht zur Stichprobe. Jetzt besser? :)

    Guten Morgen,


    ich möchte eine Stichprobe generieren, also z.B. jede 100. Mail soll als Stichprobe weiteren Aktionen unterworfen werden. Um diese Stichprobe zu selektieren habe ich folgende Formel als Tipp erhalten:


    Code
    @Round(@Random*100)=1


    "Gefühlt" bringt diese Formel zu wenig Ergebnisse, wobei mir klar ist, dass aufgrund des Zufalls eben nicht immer pro 100 Mails eine Mail selektiert wird. Bei näheren Nachdenken ist mir dabei die Frage gekommen, was die Beschreibung in der Designer-Hilfe überhaupt bedeuten soll. Dort steht geschrieben, dass eine Zufallszahl zwischen 0 und 1 generiert wird. Wie kann denn diese Zahl überhaupt aussehen? Nur 0 oder 1? Auch 0,1? Oder gar 0,12345?


    Darüber hinaus: Ist der Ansatz überhaupt richtig?


    Danke im voraus!

    Danke für Deine Antwort. Da drängen sich mir noch ein paar Fragen auf:
    1. Der private produktive Einsatz ist nicht von einem wirtschaftlichen Nutzen abhängig, oder? Oder anders, verwalte ich meine DVDs mit Notes, gilt das als produktiver Einsatz, oder?
    2. Kann ich auf dem 8.5.1er Designer selbst testen oder benötige ich dafür einen Clienten wie meinen alten 6.5er (auch wenn er nicht alle features unterstützt)?
    3. Naja, ich habe schon ein paar einfache Dinge im Kopf, die ich auf einem Server testen müsste, z.B. Agenten, die auf dem Server laufen. Was würde ich denn dann in beiden Fällen (Server/Client/Designer bzw. nur Client/Designer) benötigen? Und in welchen Preisregionen liegt so etwas?


    Ich scheue mich nicht, für meine Software Geld zu bezahlen. Nur würde ich ungern einen dicken Batzen in dieses Hobby bei meinen sehr rudimentären Kenntnissen investieren.

    Hallo zusammen!


    Ich bastele als Hobby meine eigenen Datenbanken zurecht. Eingesetzt werden meine Ergebnisse bisher privat und bei meinem Arbeitgeber. Nun möchte ich einerseits programmiertechnisch von 6.5 mal aufwärts, andererseits meine Datenbanken hoffentlich irgendwann mal zu Geld machen. Nach intensiver Recherche auf den IBM-Seiten und hier im Forum bin ich aber noch nicht schlauer, was für eine Lizenz ich dafür brauche.


    Wenn ich die Aussagen auf der IBM-Seite richtig übersetze, darf ich den Designer 8.5.1 im Prinzip kostenlos zur Erstellung meiner Datenbank benutzen. Für den Einsatz brauche ich dann aber bereits eine "Lotus Domino Enterprise Client Access License", was immer das auch ist. Aber brauche ich das für meine Zwecke tatsächlich oder würde das nur derjenige brauchen, für den ich eine Datenbank erstellt habe? Und was brauche ich außer dem Designer Client, damit ich überhaupt testen kann?


    Vielen Dank im Voraus!

    Schade, dass niemand geantwortet hat, so unberechtigt war die Frage nach einer Alternative nicht. Denn: So wie das Feld jetzt ausgestattet ist, wir natürlich bei jeder Dokument-Aktualisierung das Feld mit einem neuen Eintrag versehen. Normalerweise natürlich nur dann, wenn das Dokument gespeichert wird, aber ein einfaches F9 reicht für einen neuen Eintrag.


    Wer kann mein Problem lösen oder eine Alternative aufzeigen?


    Vielen Dank im voraus!

    taurec: Habe ich doch gemacht, koehlerbv hat geschrieben "was Du hinzufügen willst", und das habe ich doch auch gemacht. Aber der entscheidende Hinweis war der Doppelpunkt. Ich muss ehrlich gestehen, das kannte ich noch garnicht. Vielen Dank für den Hinweis, jetzt läuft es einwandfrei.


    Aber bevor ich den thread auf "erledigt" setze, gestattet mir noch eine Frage: Ist die Lösung jetzt ok so oder würdet Ihr es anders lösen? Auch Script ist willkommen, ich erweitere gerne meinen Horizont!

    Bernhard: Ok, ich habe das jetzt als berechnetes Feld gemacht und den Code wie folgt hinterlegt:

    Code
    @If(
    	@IsNewDoc;
    		@SetField("history";"Erstellt am " + @Text(@Date(Created)) + " um " + @Text(@Time(Created)) + " von " + @Name([CN];CreatedBy));
    		@SetField("history";("Bearbeitet durch: " + @Name([CN];@UserName) + " am " + @Text(@Date(@Now)) + " um " + @Text(@Time(@Now)))+ "," + history )
    	)


    Die Folge ist die ständige Doppelung der bisherigen Einträge. Egal, ob ich das Komma, das ich zur Trennung der Mehrfachwerte gedacht habe, mit in die Klammer ziehe oder draußen lasse, es führt immer zur Doppelung der Einträge. Lasse ich das Komma komplett weg, wird der Eintrag nicht als neuer Wert erkannt und die Einträge werden einfach als Fließtext interpretiert.


    taurec: Schau mal genau hin, der erste und der dritte Eintrag sind identisch. Speichere ich nochmal, sieht es so aus:

    Ok, danke Euch, das ist wohl wahr, IsDocBeingSaved macht tatsächlich keinen Sinn. Bleibt ein einfach @SetField, was aber nicht wirklich funktioniert.


    Variante 1:
    Das Feld ist Bearbeitbar, was ja überhaupt nicht gewollt ist, weil jeder es ändern könnte. Umgehung würde ich machen, indem ich das Feld verberge und ein berechntes Feld displayhistory mache. Aber: Ich verwende jetzt folgenden Code im QuerySave:

    Code
    @If(
    	@IsNewDoc;
    		@SetField("history";"Erstellt am " + @Text(@Date(Created)) + " um " + @Text(@Time(Created)) + " von " + @Name([CN];CreatedBy));
    		@SetField("history";"Bearbeitet durch: " + @Name([CN];@UserName) + " am " + @Text(@Date(@Now)) + " um " + @Text(@Time(@Now)) + "," + history )
    	);


    Das Ergebnis ist nicht wirklich gut. Der erste Eintrag bei einem neuen Dokument ist in Ordnung, bei der ersten Bearbeitung funktioniert es auch einwandfrei. Doch bei der zweiten Bearbeitung wird der erste Bearbeitungseintrag gedoppelt:

    Zitat


    Bearbeitet durch: Jokeman am 23.02.2009 um 16:21:53
    Bearbeitet durch: Jokeman am 23.02.2009 um 16:21:46
    Bearbeitet durch: Jokeman am 23.02.2009 um 16:21:53
    Erstellt am 23.02.2009 um 16:21:28 von Jokeman


    Kann mir jemand verraten, woran das liegt?


    Variante 2:
    Das Feld ist Berechnet, es werden jedoch keine Einträge hinzugefügt, obwohl ich meiner Meinung nach sehr wohl berechnete Felder per @SetField ändern kann. Irre ich da?


    Variante 3:
    Ich trenne mich von QuerySave und nutze nur ein berechntes Feld und füge o.g. Code als Berechnungsformel ein. Der auftretende Fehler ist identisch mit Variante 1.


    Global:
    Mal unabhängig von der Lösung der o.g. Fehler, bin ich total auf dem Holzweg? Gibt es elegantere Lösungen? Oder ist zumindest mein Ansatz richtig?


    Vielen Dank im voraus!

    Hallo Dirk,


    naja, ich habe recht einfach gedacht, und es erstmal so probiert:

    Code
    @If(
    	@IsDocBeingSaved;
    	@SetField("history";history + "Blabla");
    	"");


    Nur führt das ja leider nicht zum Ergebnis, weil das Dokument anschließend nicht mehr gespeichert wird. Ein angefügtes FileSave geht auch nicht, es führt zur Fehlermeldung "Versuch, verschachtelte Maskenereignisse auszuführen". Ist ja auch logisch, eine FileSave im QuerySave kann ja auch nur zu einer Endlosschleife führen.

    Hallo Leute,


    ich stehe gerad mal ganz derbe auf dem Schlauch und komme nicht dahinter, wie ich meinen Code aufbauen muss.


    Ich habe ein berechnetes Text-Feld "history", in dem Mehrfachwerte zugelassen sind. Als Vorgabewert ist "Erstellt durch..." hinterlegt. Und dazu liegt das Feld noch in einer Teilmaske.


    Jetzt möchte ich, dass bei jeder Speicherung und bei diversen Aktionen ein Eintrag in das Feld eingefügt werden. Bei Speicherung also z.B. "Bearbeitet durch..." und bei diversen Aktionen z.B. "Status auf aktiv gesetzt durch...".


    Bei den Aktionen packe ich das natürlich in die Aktion selbst, bei der Speicherung wollte ich das in das "Querysave" der Teilmaske stecken, wo es meiner Ansicht nach auch hingehört.


    Ich habe diesen Code-Schnipsel vor gefühlten 100 Jahren mal gemacht und immer wieder kopiert, doch jetzt ist er irgendwie weg und ich stehe mangels Übung auf dem Schlauch. Nachdem ich mit der Formel-Sprache nicht weiterkomme, habe ich es auch mit ArrayAppendText probiert, da komme ich auch nicht weiter. Doch eigentlich ist das doch nicht wirklich schwer.


    Wer kann mir helfen? Vielen Dank im voraus!

    Auweia, ich habe zwar db2.Server angepasst, aber mailfile$ gelassen. Klar, dass ich eine Fehlermeldung bekommen habe. :wuet: Es ist meistens die eigene Dummheit, die einen stoppt... :)


    Ich danke recht herzlich für die Hilfe und die behutsame Heranführung an LotusScript.


    Fehlt mir nur noch eine Buchempfehlung, damit ich irgendwann auch mal etwas zurückgeben kann... :)

    Ich habe es jetzt auf Dein Anraten mit OpenMail probiert. Dazu habe ich folgenden Code verwendet:

    Code
    Dim db2 As New NotesDatabase ( "", "" )
    Call db2.OpenMail


    db2 habe ich verwendet, weil ich db und db2 für eine Variable halte, die sinnvollerweise dann eindeutig und nur einmal verwendet werden sollte. Ich hoffe, dass ich damit richtig liege.


    Mit einer Messagebox werden mir die Werte db2.Server und db2.Filepath auch einwandfrei ausgegeben. Da ich davon ausgehe, dass es sich bei mailserver$ ebenfalls um eine Variable handelt, habe ich sie einfach ausgetauscht. Doch scheinbar geht das nicht. Wie bekomme ich nun die mit OpenMail ermittelten Werte als Parameter an die PickListCollection übergeben?


    P.S.: Was hältst Du von so einem Buch:
    http://www.amazon.de/LotusScri…oks&qid=1219831371&sr=1-1

    Zitat

    NotesDatabase und NotesSession sind Objekte und Server und CurrentUser Eigenschaften dieser. Entweder suchst du nach NotesDatabase und findest dort dann die Server Eigenschaft oder du suchst nur nach Server.


    Die Schreibweise Objekt.Eigenschaft sollte eigentlich nur den Zusammenhang verdeutlichen, denn die Objekte selber verwendest du ja schon.


    Ja, ich finde da etwas, aber ich bekomme es (rein gedanklich) nicht auf die Reihe. Ich brauche ja mailserver$ und mailfile$. Die lese ich per NotesRegistration-Klasse aus dem Adressbuch aus. Muss ich beim Server vorher eine Variable definieren, dieser den Wert notesSession.ServerName zuweisen und dann als Parameter an die Registration-Klasse übergeben? Sorry, ich stehe gerade voll auf dem Schlauch. :(


    Zitat

    Also zumindest teilweise ist das so. Ich selbst verwende eh nur die englische Hilfe, da ich diese persönlich besser finde und man gerade mit den englischen Stichworten, die z.B. bei Fehlermeldungen kommen, einfach leichter zu finden sind.
    Mal davon abgesehen, daß es in der IT ja eh so ist, daß die besten Dokus auf englisch sind.


    Da gebe ich Dir Recht. Allerdings lese ich gerne parallel, um einige Dinge schneller verstehen zu können.


    Zitat

    Das ist der absolut korrekte Weg, wobei das nur bedeutet, daß beim Öffnen des Dokumentes diese Maske verwendet wird.
    Um z.B. berechnete Felder der Maske auch in dem Dokument zu berechnen musst du vor dem Speichern noch ein ComputeWithForm aufrufen.


    Auch das möchte ich richtig verstehen können. Normalerweise wird ja am Dokument gespeichert, welche Maske verwendet wird. Mir ist klar, dass die Maske nicht im Dokument gespeichert wird (es sei denn, ich setze entsprechende Option). Eigentlich möchte ich ja nur erreichen und sicherstellen, dass nicht immer die Vorgabemaske genommen wird, sondern dass ich durchaus auch zwei ähnliche Scripts in einer Datenbank verwenden kann, die dann unterschiedliche Masken verwenden. Kurzum: Das wie an jedem "normalen" Notes-Dokument die zu verwendende Maske gespeichert wird. Wenn ich das damit erreiche, bin ich ja zufrieden.


    Zitat

    Die Variante, wie du die MailDB ausliest, funktioniert einwandfrei, sofern immer nur auf den Server und das dort liegende Mailfile zugegriffen wird. Verwendet der User z.B. eine lokale Arbeitsumgebung und hat gerade keinen Zugriff auf den Server dann wird das nicht funktionieren. Idealerweise erzeugst du eine leere NotesDatabase (New NotesDatabase("","")) und rufst dann die Methode OpenMail auf, dann hast du das in der aktuellen Arbeitsumgebung definierte Mailfile.


    Wenn ich die Hilfe dazu richtig verstehe, liefert mir das den Server und die Datenbankbezeichnung aus der notes.ini. Die Datenbankbezeichnung ist mir aber doch relativ egal, ich brauche ja eigentlich Namen und Pfad zur Datei. Kann ich nicht dann auch gleich die "GetEnvironmentString method" verwenden? Denn sowohl Servername als auch Pfad zum Mailfile stehen doch in der Notes.ini.
    Mir geht es aber in erster Linie hierbei um eine einfache Variante. Augenblicklich sind bei uns sowohl die neue Datenbank als auch Mailfile auf dem Server, lokale Repliken gibt es nicht. Insofern ist die "failsave"-Variante nette Zukunftsabsicherung aber im Moment nicht zwingend notwendig.

    Juhu, die erste Hürde ist genommen. Nachdem ich die GetFirstDocument methode eingefügt habe, tritt der Fehler nicht mehr auf. Zusätzlich ein Error-Handling, falls der Picklist-Dialog abgebrochen wird, damit kein leeres Dokument erzeugt wird.


    Zwei Bitten habe ich noch:
    1. Für meinen ersten Tag mit LotusScript glaube ich nun, in etwa verstanden zu haben, was ich da geschrieben habe. Daran werde ich mich zukünftig sicherlich auch orientieren. Es wäre mir daher lieb, wenn Du noch einen Blick darauf werfen würdest, ob ich überflüssige Schnipsel verwendet habe.
    2. Ich verneige mich vor Deinem Wissen, aber einfach so NotesDatabase.Server und NotesSession.CurrentUser in den Raum zu werfen überfordert mich heute. Wenn ich nach den Begriffen in der Hilfe suche, finde ich nichts passendes. Sind das Variablen, die ich in den Abschnitt "Auslesen der MailDB" einbauen soll oder ist der Ansatz bereits falsch?


    Und noch drei Fragen:
    1. Ist das normal, dass in der deutschen Designer-Hilfe die Dokumente zu LotusScript trotzdem alle in Englisch sind?
    2. Wo kann ich eine Hilfe/ein Handbuch zu LotusScript in Deutsch finden?
    3. Bei dem Befehl "Set doc = New NotesDocument( db )" ist keine Maske vorgegeben, allerdings habe ich ja ein "doc.Form = "Testmaske"" eingebaut. Bewirkt das tatsächlich die Wahl der Maske?


    Vielen Dank für die Hilfe!


    Danke schonmal für das Schubsen in die richtige Richtung!


    Nachdem ich mir Deine Hinweise ausführlich zu Gemüte geführt habe, und folgenden Code zusammengefriemelt:


    Leider funktioniert das Script so nicht. Ich bekomme natürlich die Picklist angezeigt, danach aber den "Object Variable not set". Ein Dokument wird nicht erstellt. Wenn ich das was ich geschrieben habe einigermaßen richtig verstehe, liegt es wohl in der Umwandlung der Collection in ein Dokument, weil für das RendertoRTItem ein Dokument benötigt wird. Ist das mein Fehler? Und wonach muss ich suchen, um es richtig zu machen?


    Servername und Username habe ich bei mir natürlich durch die echten Namen ersetzt. Würde ich natürlich auch gerne variabel gestalten, nach etwas wie "currentserver" oder "currentuser" habe ich bereits gesucht, aber auch nichts gefunden.


    Danke im voraus!

    Hallo zusammen,


    ich möchte gerne Mails aus dem Posteingang vollständig in ein Richtext-Feld eines neuen Dokuments übernehmen. Das "Problem" ist, dass das neue Dokument nicht im Mailfile erzeugt werden soll, sondern in einer anderen Datenbank. Außerdem kann ich die Gestaltung des Mailfiles nicht anpassen.


    Ich brauche also eine Funktion in meiner neuen Datenbank, die quasi temporär den Posteingang öffnet, mich ein Dokument auswählen lässt, und den vollständigen Inhalt in das Feld "Body" übernimmt. Ich habe es bisher mit @Picklist probiert, aber damit habe ich bisher nur eine Spalte aus dem Posteingang übernehmen können.


    Ich kann kein LotusScript, bin aber lernwillig. Wer kann mich in die richtige Richtung schubsen?


    Danke im voraus! :)