Stammdateneingabe

  • Hallo an alle,
    ich hab' ein Problem mit zwei Masken.
    Aus einer Gliederung kann der Mitarbeiter [color=003399]Maske1[/color] aufrufen.
    Wenn der Mitarbeiter zum ersten Mal die [color=003399]Maske1[/color] aufruft, soll die [color=990000]Maske2 [/color]aufpoppen, hier soll er seine Pers.Nr. zwingend eingeben.


    Das hab' ich mit DBLoopup gelöst. Und eigentlich klappt das auch, allerdings krieg ich eine Fehlermeldung, dass er den Index nicht gefunden hat (stimmt ja auch, weil der Mitarbeiter noch nicht in der DB steht),


    es wird auch die [color=990000]Maske2[/color] aufgemacht, allerdings nicht im Vordergrund.

    Meine Formel sieht so aus:
    Im Queryopen der Maske1:
    REM "Wenn MA gefunden, Persnr übernehmen, [color=339900]dass klappt super[/color]";
    FIELD txtPersonalnummer := @DbLookup("Notes" : "NoCache"; ""; "Mitarbeiter Auswahl"; @UserName; "ProfilPers");


    REM "Wenn Pers.nr leer, wird Stammdatenmaske aufgerufen, [color=339900]dass klappt nicht ganz[/color]";
    @If(@IsError (txtPersonalnummer) ; @Return(@Command([Compose]; "MAProfil")); "")


    1.Frage: wie unterbinde ich die Fehlermeldung???
    2.Frage: wie krieg ich die [color=990000]Maske2[/color] in den Vordergrund???


    Ich hoffe, das Problem ist verständlich?
    Karin

  • Das war auch gut so. Ich dachte, Du wolltest - falls nicht vorhanden - ein ProfilDok erstellen lassen. Dafuer kannste @Dialogbox nicht gebrauchen, weil die nur das aktuelle Dokument - oder Teile daraus - darstellt.

  • Stimmt, eigentlich wollte ich ein Profildok. vom Mitarbeiter(MA)erstellen lassen.
    Allerdings muss der Vorgesetzte für seinen MA ebenfalls eine Arbeitszeitaufschreibung erstellen dürfen. Mit Personalnummer und Kostenstelle seines MA's.


    Dazu gibt es eine Schaltfläche, die mit Picklist auf eine Ansicht zugreift, in der alle MA mit der von ihnen erstellten Persnr. und Kostenstelle angezeigt werden.


    Das klappt auch alles gut. Personalnr., Kostenstelle und Name werden auch richtig übernommen.
    Es muss eben nur diese "Maske2" im Vordergrund aufgehen, wenn dieser MA das erste Mal die Maske1 aufruft und noch nicht in der Ansicht vorhanden ist.


    Mit Dialogbox hab' ich das auch nicht hinbekommen...


    Hab' ich einen Fehler im zweiten Teil meiner Formel ??? Ist vielleicht 'ne Klammer falsch oder sowas?


    @If(@IsError (txtPersonalnummer) ; @Return(@Command([Compose]; "MAProfil")); "")


    Der @Return klappt ja auch, die Formel wird nicht weiter ausgeführt, nur die Maske "MAProfil" kommt nicht in den Vordergrund. In der Fensterleiste ist sie zu sehen, aber halt nicht im Vordergrund.


    Es ist zum :cry:

  • Die Fehlermeldung unterbindeet Du, indem Du dem feld nicht den @DBLookup zuweist. Ueber diesen Umweg bekommste keine Fehlermeldung

    Code
    REM "Wenn MA gefunden, Persnr übernehmen, dass klappt super";
    nummer :=@DbLookup("Notes" : "NoCache"; ""; "Mitarbeiter Auswahl"; @UserName; "ProfilPers");
    
    
    FIELD txtPersonalnummer := @If(@IsError(nummer);@Command([Compose]; "MAProfil");nummer);"";
    
    
    REM "Wenn Pers.nr leer, wird Stammdatenmaske aufgerufen, dass klappt nicht ganz";


    Fuer das andere Problem muss ich noch etwas gruebeln.
    Was mich allerdings etwas wundert...warum fuellen die Mitarbeiter die Dokumente selber aus? Ich wuerde das irgendwie programmieren. Was passiert z.B. wenn sich Daten aendern?

  • Die Personalnummer wird sich nicht ändern. Die Kostenstelle hole ich per BatchInput aus SAP.
    Ich brauche nur eine eindeutige Verbindung zwischen Notes Name und Personalnummer.


    Ist alles nicht so einfach...
    Aber ich denke, die Lösung ist nicht mehr fern :D Mit eurer Hilfe...

  • Also Dialogbox im Script kannst du dafür sehr gut gebrauchen, da du dort dir ja vorher das Profildokument holen kannst.
    Um halt ein Dokument zwingend in den Vordergrund zu bekommen, sehe ich ausser Dialogbox keine Möglichkeit.
    Alle anderen Varianten lassen dem Benutzer hatl die Möglichkeit das zusätzliche Fenster zu schliessen

  • taurec: Sie will doch die Maske2 nur aufrufen wenn ein solches Dokument nicht besteht. Also - sie schrieb es schon - ein neues Dokument erstellen. Das geht nicht mit Dialogbox

  • Falsch, ich kann mir auch problemlos im Backend ein Dokumentlen lassen und dieses per Dialogbox aufrufen, füllen lassen und dann die Werte weiterverarbeiten bzw in ein Profildokument schreiben.


    Jeder andere Weg wird eben nicht bewirken dass der Benutzer dieses Fenster nicht umgehen kann

  • Das war der Hinweis, der es moeglich macht. Mit Script sieht der Queryopen event dann so aus


    Anpassungen duerfen vorgenommen werden :lol:

  • Das hat schon mal super geklappt.
    Allerdings nur wenn ich als Manager eine neue Maske1(AZA) schreiben will.Die Maske2(MAProfil) geht auf, ich gebe meine Pers.nr. ein, klicke auf okay und die AZA geht auf.
    Wenn ich als Leser oder Dummy (haben auch Autorenrechte in der DB) eine AZA schreiben will, bekomme ich den Fehler:


    Sie dürfen keine Dokumente aktualisieren oder löschen, für die Sie nicht als zulässiger Autor aufgeführt sind.


    Hmm, ich will ja auch nicht das eine Dok. vom Manager ändern sonder ein neues erstellen.
    Leider bin ich in Lotus Script nicht so bewandert, könnt ihr mir noch mal helfen?
    Steckt der Fehler hier:


    Set profile_doc = v.getdocumentbykey(s.username)

  • Der Key - s.username - liefert den vollen hierarchischen Namen zurueck. Ich weiss nicht, wie er in Deiner Ansicht "Mitarbeiter Auswahl" steht. Wenn die Benutzer nur Autorenzugriff haben, sollte in den Dokumenten auch Autorenfelder auftauchen und dementsprechend gefuellt werden.
    Entsprechende Codeanpassung

    Code
    Else
    		Set profile_doc = db.createdocument
    		Dim autoren As notesitem
    		Set autoren = New notesitem(profile_doc, "Autoren", s.username,AUTHORS)
    		profile_doc.save True, True
    		Call ws.dialogbox("MAProfil",,,,,,,,profile_doc)
    		profile_doc.form = "MAProfil"
    		profile_doc.save True, True
    	End If