Profildokumente

  • Hallo mal wieder,
    ich hab' in meiner DB eine Maske1 mit verschiedenen Daten. Unter anderem soll in der Maske1 die Personalnummer automatisch aus einem Profildokument geladen werden. Wenn es noch kein Profildokument gibt, soll die Profilmaske aufgerufen werden. So weit, so gut...
    Wenn ich also die Maske1 aufrufe, hab`ich in dem Feld PersNr. (Berechnet beim Anlegen) folgendes eingebaut :


    @If(txtPersonalnummer != ""; @GetProfileField( "MAProfil" ; "ProfilPers" ; @UserName); @Command( [EditProfile] ; "MAProfil"; @UserName ))


    Wenn ich die Maske1 nun aufrufe, bekomme ich immer eine Fehlermeldung die lautet:
    "@Befehle ... sind in diesem Kontext nicht erlaubt".


    Hmm, wie krieg ich aus dem Profildok. das Feld ProfilPers in meine Maske1 ??
    Wahrscheinlich ganz einfach, oder :-?
    Karin

  • Ich würde jetzt mal sagen, diese beiden Schritte zu trennen.


    Das Berechnete Feld
    ungefähr so:
    @iferror(@GetProfileField( "MAProfil" ; "ProfilPers" ; @UserName);"")


    und dann entweder in der Field validation oder im QuerySave event des Dokuments nochmals prüfen und dort evtl. das Profil öffnen.


    gruss

  • Ein nicht definiertes Profildokumentfeld gibt m.W. keinen Error, sondern einen Leerstring zurück.


    Wenn in dem Profildokument mehr als nur die Personalnummer drinsteht, dann solltest du mit einem Profildokument arbeiten, ansonsten arbeite ich in solchen Fällen auch ab und zu mit Environment-Variablen, z.B.


    Vorgabewert:
    @If(PNr="";@Environment("LetztePNr");PNr)


    Eingabeumsetzung:
    ENVIRONMENT LetztePNr:=PNr;
    PNr


    Eingabevalidierung:
    @If(PNr="";@Failure("Sie müssen Ihre Personalnummer eintragen");@Success)


    Wenn du das Profildokument benötigst, baust du eine Schaltfläche in die Maske oder die Action-Bar, die das Profildokument aufruft und anschließend die eingegebene Personalnummer in das Feld überträgt. Dann mußt du den Text der Eingabevalidierung etwas ändern.

  • Gestärkt von der Mittagspause...


    zur 1.Antwort:
    @IfError... geht bei mir nicht, hab' noch notes5
    gibts da eine andere Möglichkeit?


    zur 2.Antwort:
    Ich brauch ein Profildok., mit Pers.Nr., Kostenstelle, Telefon, Name.
    Ich bekomme wohl die Fehlermeldung, weil ich das GetProfil bzw. EditProfil in eine If-Schleife eingebaut habe. Vermute ich zumindest.
    Mit Environment habe ich es gelöst, als ich nur die Pers.Nr. brauchte. Das hat auch super geklappt. Aber die Anforderungen sind halt immer größer geworden.


    Ich habe eine Gliederung, über die der Mitarbeiter seine "Stammdaten" eingeben kann. (Über einen Agenten rufe ich das Profildok auf). Das klappt auch gut. Nur das Anzeigen in der Maske1 klappt nicht, selbst wenn ich ganz einfach nur GetProfile mach...


    Für weitere Tipps schon mal danke
    Karin

    • Offizieller Beitrag

    zu 1.
    dann bekommst Du es mit @If und @IsError hin.


    zu 2.
    bau Dir doch den Env-String zusammen PersNr + "#"+ Kostenstelle + "#" + Telefon + "#" + Name.
    Später kannst Du die Werte mit @Word trennen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Du bekommst die Fehlermeldung, weil an der Stelle kein @Command erlaubt ist. Einen Fehler wirst Du nicht erhalten - das wurde hier schon erwaehnt - ein fehlendes Dokument liefert dann halt den leeren String zurueck.
    Du koenntest aber wie gehabt Deine Formel " @GetProfileField( "MAProfil" ; "ProfilPers" ; @UserName)" ablaufen lassen. Und wenn nichts zurueck kommt, den User prompten und sagen, von ihm fehlen noch Stammdaten, er moege sie bitte erst vervollstaendigen. Eine von 782 Moeglichkeiten