Autor Thema: Hide When auf ein Feld anwenden.  (Gelesen 4772 mal)

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Hide When auf ein Feld anwenden.
« am: 11.07.08 - 10:36:18 »
Hallo zusammen,

ich versuche mich gerade an einem kleinen Workflow und würde gerne eine Userabhängige Darstellung eines Feldes/Textes haben.

Zur Erklärung. In einer Maske wird (fmManager) werden in ein Feld Typ name(manDepartment) User eingetragen. (Eingabeumsetzung @Name([CN];manDepartment).
In einer zweiten Maske habe ich eine Tabelle mit Text und Feld, ebenfalls Typ Name  (reqAprov1), das Feld holt sich die Information aus einer Ansicht, die mit den Informationen des Feldes manDepartment befüllt wird.

In dem Feld reqAprov1 sollen unsere User später z.B. den Namen ihres Department Leaders auswählen können.

Ist jetzt aber ein User MItglied dieser Department Leader, soll dieses Feld nicht angezeigt werden.

Genau da liegt jetzt mein Problem.
Ich habe schon verschiedene Abfragen versucht, aber keine hat so richtig zum Erfolg geführt.

Das ist meine aktuelle Formel:
!(@UserNamesList *=manDepartment)

Ich habe aber auch schon probiert:
Namen :=@GetProfileField("fmRequest";"manDepartment");
@IsMember(@UserName; Namen)

Irgnedwie habe ich noch ein Verständnisproblem mit den Formel. Ist noch Neuland.

Vielleicht kann mir jemand von euch auf den richtigen Weg führen.

Danke....
 
Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hide When auf ein Feld anwenden.
« Antwort #1 am: 11.07.08 - 10:43:37 »
Du vergleichst Äpfel mit Birnen: UserNamesList liefert Dir (u.a.) den hierarchischen Namen, in Deiner Managerliste hast Du die Namen aber vorher mit [CN] verwurstet. @UserNamesList ist auch untauglich.

Daher: Nimm @UserName und wandele diesen ebenfalls in einen common name um vor dem Vergleich.

Bernhard

Driri

  • Gast
Re: Hide When auf ein Feld anwenden.
« Antwort #2 am: 11.07.08 - 10:44:42 »
Bei dem Vergleich auf Namen ist meistens das Problem, daß unterschiedliche Schreibweisen miteinander verglichen werden.

@UserName liefert den vollen Usernamen zurück, also inklusive Etiketten. Wenn das Feld im Profiledokument ein normales Textfeld ist, bekommst Du völlig andere Namen zurück.

Du kannst in dem Fall dann mit @Name für eine einheitliche Schreibweise sorgen.


Edit : Bernhard war wieder schneller  ;D

klaussal

  • Gast
Re: Hide When auf ein Feld anwenden.
« Antwort #3 am: 11.07.08 - 10:45:59 »
Oder arbeite mit Rollen und dann:

Code
@Contains(@UserNamesList;"[DepLeader]")

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Hide When auf ein Feld anwenden.
« Antwort #4 am: 11.07.08 - 13:55:10 »
 ??? ??? ???....

Du vergleichst Äpfel mit Birnen: UserNamesList liefert Dir (u.a.) den hierarchischen Namen, in Deiner Managerliste hast Du die Namen aber vorher mit [CN] verwurstet. @UserNamesList ist auch untauglich.

Daher: Nimm @UserName und wandele diesen ebenfalls in einen common name um vor dem Vergleich.


Mach ich das im gleichen Formelfenster z.B. so
@Name([CN];@UserName);
(@UserName *=manDepartment)

Findet Notes das Feld obwohl es in einer anderen Maske ist??


@Klaus,

an die Rollen habe ich auch schon gedacht, ich hätte gerne halt mein Auswahlfenster gehabt, damit unsere User nicht aus dem NAB Ihren Department Leader aussuchen müssen, wir haben 50000 User in unserem Domänenadressbuch.

Wenn es nicht anders geht, mache ich es schon so, aber die andere Variante wäre mir lieber.

Das Feld im Profiledokument ist auch ein Namensfeld. Ich habe alle Namensfelder auf die gleiche Art und Weise mit der Eingabeumsetzung @Name([CN];feldname) versehen.

Gruß Ulli

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hide When auf ein Feld anwenden.
« Antwort #5 am: 11.07.08 - 14:59:55 »
Hi Ulli,

schon mal da rein geschaut?
http://atnotes.de/index.php?topic=18203.0

Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hide When auf ein Feld anwenden.
« Antwort #6 am: 11.07.08 - 16:45:41 »
Findet Notes das Feld obwohl es in einer anderen Maske ist??

Hier ist alles falsch. Das Wort "Maske" ist vollkommen fehl am Platze, da eine Maske nur ein Frontend-Designelement ist für die gewünschte Anzeige des Inhaltes eines Dokumentes ist.

Du musst also zunächst den Inhalt des Items (Du sagst vielleicht noch "Feld", aber das ist auch nur eine Ein-/Ausgabe-Sache aus dem Frontend, die nichts damit zu tun haben muss, was im Item im Dokument wirklich steht) auslesen. Kommen die Inhalte aus vielen Dokumenten, müssen diese ermittelt werden. Also:
- Dokument, dass das Item enthält, holen (Ist es Profildokument? Ein normales Dokument?)
oder
- Eine Ansicht mit den Werten auslesen

Hierfür bräuchte man jetzt mehr Input.
Und: Wenn Du in einer Organisation mit 50.000 Benutzern arbeitest, solltest Du doch auch eine anständige Schulung verabreicht bekommen können ...

Bernhard

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Hide When auf ein Feld anwenden.
« Antwort #7 am: 14.07.08 - 11:49:54 »
Hallo Bernhard,
danke erstmal für deine Geduld. Ich habe nur in unserem Standort 280 User zu versorgen, wir haben aber eine große Domäne über den ganzen Konzern und entsprechend ein aufgeblasenes Adressbuch mit 50000 Usern usw...


- Eine Ansicht mit den Werten auslesen

Hierfür bräuchte man jetzt mehr Input.
Und: Wenn Du in einer Organisation mit 50.000 Benutzern arbeitest, solltest Du doch auch eine anständige Schulung verabreicht bekommen können ...

Bernhard


Nichtsdestotrotz ist dein Argument mit der Schulung berechtigt. Die hatte ich auch schon, aber nur einen Einsteigerkurs über 4 Tage. Mit Formlen haben wir zwar gearbeitet, aber natürlich längst nicht alle Bereiche angesprochen. Den Rest versuche ich mir jetzt über Bücher, best practise und Designer Hilfe usw... anzueignen. Das alles neben Helpdesk usw..

Okay, genug gejammert.
Ich versuche, Dir noch mal genau zu schildern was ich vorhabe.


Ich habe  zwei masken erstellt, über die man später arbeiten soll, eine für die Admins, das ist meine fmManager. In diese sollen unsere Department Leader über Felder eingetragen werden.
Das ganze wird dann nicht in einem Profildokumet gespeichert (da war ich auf dem falschen Dampfer), sondern in einer Ansicht Department Manager (vwManDepartment) gespeichert. Spalte bezieht sich auf das Feld "manDepartment". Ansichtsauswahl (SELECT Form="fmManager").

Die zweite maske ist für alle User, in der später Reiseanträge gestellt werden sollen. Soweit vom Grundaufbau auch kein Problem.

Innerhalb dieser Maske habe ich nun ein Feld reqAprov1. siehe screenshot.



Die Informationen holt er sich wie im Bild ersichtlich aus der Ansicht Department Leader.
Diese Eingabemöglichkeit brauche ich jetzt aber nicht immer, da auch die Department Leader einen Antrag stellen und dieses Feld nicht sehen sollten.
Das heißt, ist in dieser Ansicht der Name des Users vorhanden, sollte diese Auswahlmöglichkeit nicht sichtbar sein.

Die Möglichkeit, die User einzeln in die ACL zu packen und es über Userroles zu machen, ist mir klar (das haben wir auch im Kurs gemacht), die andere Option würde ich allerdings auch gerne ausprobieren und verstehen wollen. Man (frau) lernt ja nie aus.


Das ist meine aktuelle Formel:
!(@UserNamesList *=manDepartment)

Ich habe aber auch schon probiert:
Namen :=@GetProfileField("fmRequest";"manDepartment");
@IsMember(@UserName; Namen)
 

Die zweite Formel, habe ich eingesehen wird wohl eher nicht zum Erfolg führen, da ich aus der Ansicht die Information holen will, und nicht aus einem ProfileDok.

Nach deinen Informationen Bernhard muss ich also jetzt prüfen, wenn der Username Mitglied der Ansicht vwManDepartment ist, dann zeige das Feld nicht an.
Ich würde es in diesem Fall mit
!@IsMember(@UserName;vwManDepartment)
versuchen. Wobei ich dann wieder an den unterschiedlichen Schreibweisen des UserNames scheiter.

Danke schon mal im vorraus für alle weiteren Tipps.
Gruß Ulli

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Hide When auf ein Feld anwenden.
« Antwort #8 am: 14.07.08 - 11:58:51 »
Hallo Ulli.

Ersteinmal wird auch nichts in Ansichten gespeichert. Eine Ansicht ist ein Hilfsmittel um eine Menge an Dokumenten zur Auswahl bereit zu stellen.

Schau Dir mal die @Name Funktion in der Designer Hilfe an.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hide When auf ein Feld anwenden.
« Antwort #9 am: 14.07.08 - 12:09:08 »
In welcher Form werden denn in der Ansicht die Namen angezeigt? Wie Andre schon schrieb, muss man ggf. mit @Name die Rückgabe von @UserName anpassen.

Das
!@IsMember(@UserName;vwManDepartment)
kann natürlich auch nicht funktionieren - hierfür müsste vwManDepartment ein Itemname oder eine Variable sein. Für den Inhalt einer Ansichtsspalte müsstest Du in diesem Konstrukt @dbColumn einsetzen - in zweierlei Hinsicht nicht zu empfehlen: Es wird eine grosse Datenmenge gelesen, und wenn diese dann gar das 64 kB-Limit sprengt ...
Besser wäre in diesem Fall ein !@IsError (@dbLookup ...)

HTH,
Bernhard

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Hide When auf ein Feld anwenden.
« Antwort #10 am: 14.07.08 - 17:05:39 »
Hallo zusammen


Ihr habt es hier mit einem absolut beginner in der Programmierung zu tun, deswegen vielleicht das eine oder andere Verständnissproblem. Bis jetzt habe ich mich nur im Administrativen Bereich aufgehalten. Also... be patient.... danke.... :)

Ist doch eigentlich auch klar, das in der Ansicht nichts gespeichert wird (einmal auf die Stirn klopfen), sondern meine Infos liegen in meinem fmManager. Soweit so gut.

@Bernhard,

Die Namen werden über die Eingabeumsetzung @Name([CN];manDepartment) dargestellt, also in VORNAME NACHNAME

@UserName habe ich kapiert, gibt mir CN=VORNAME NACHNAME/OU=xxxx/OU=xxx/O=xxxxxxx zurück, da die Werte @UserName und meine durch die eingabeumsetzung definierte Ablage nicht gleich sind, klappts auch nicht.

Die Designer Hilfe liegt schon im Autostart und habe ich auch fleißig schon gelesen. @Name ([CN];@Username) wandelt mir den Username ins gleiche format, aber die Frage ist wo? muss ich das definieren. Da ist der Berg noch verdammt hoch und das Licht am Ende des Tunnels noch nicht zu sehen.

....völlige Verwirrung. Das ganze lässt sich mit Sicherheit auf mehreren Wegen lösen, aber welcher ist der optimalste, mit am wenigesten Aufwand verknüpfte?? Da fehlen mir halt leider völlig die Erfahrungswerte. Ich glaub ich machs doch mit UserRoles :(

Jetzt mach ich erst mal Feierabend und versuch das Wald vor lauter Bäume Phänomen los zu werden.
Auf ein neues morgen.
Ach ja, das war mein letzter Versuch @IsMember(@Name([CN];@UserName);manDepartment) um diese Rückgabe mit dabei zu haben.....


Gruß Ulli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hide When auf ein Feld anwenden.
« Antwort #11 am: 14.07.08 - 17:09:40 »
We are patient  :)

Wie ich schon schrieb, kann
Code
@IsMember(@Name([CN];@UserName);manDepartment)
nicht funktionieren.

Zwei Wege zur Lösung habe ich auch aufgezeigt.

Code
@Name([CN];@UserName)
ist schon mal in Ordnung - Du vergleichst nicht mehr Äpfel mit Birnen.

Bernhard

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Hide When auf ein Feld anwenden.
« Antwort #12 am: 14.07.08 - 17:17:06 »

Ist doch eigentlich auch klar, das in der Ansicht nichts gespeichert wird (einmal auf die Stirn klopfen), sondern meine Infos liegen in meinem fmManager. Soweit so gut.
.........
Ach ja, das war mein letzter Versuch @IsMember(@Name([CN];@UserName);manDepartment) um diese Rückgabe mit dabei zu haben.....


da muss doch jetzt ein array von fmManager hin und nicht die Ansicht manDepartment ?

oder sehe ich das falsch?

Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Hide When auf ein Feld anwenden.
« Antwort #13 am: 15.07.08 - 08:50:53 »
Guten Morgen,

We are patient  :)


Wahrscheinlich regt's mich selber mehr auf....... ;)

Aber
Code
@Ismember
ist der richtige Ansatz?
Nicht das ich da in die völlig falsche Richtung laufe.

@DAU-In
Blöde Frage, was meinst Du mit array ?



Gruß Ulli

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Hide When auf ein Feld anwenden.
« Antwort #14 am: 15.07.08 - 09:09:14 »
in deinen Dokumenten, die du mit der Maske fmManager erstellt hast, hast du doch die Information drin, mit der du vergleichen willst?

also davon eine Textliste (sorry, kein array) erstellen zum vergleichen. Oder liege ich da verkehrt?

Du hast in irgendwelchen anderen Dokumenten die Namen der Personen gespeichert, mit denen du vergleichen willst?
« Letzte Änderung: 15.07.08 - 09:14:12 von DAU-in »
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hide When auf ein Feld anwenden.
« Antwort #15 am: 15.07.08 - 09:10:47 »
Eine Textliste ist ein Array, Anita ...

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Hide When auf ein Feld anwenden.
« Antwort #16 am: 15.07.08 - 09:14:49 »
Bernhard, ich habe heute noch keinen Kaffee gehabt.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Hide When auf ein Feld anwenden.
« Antwort #17 am: 15.07.08 - 09:26:21 »
in deinen Dokumenten, die du mit der Maske fmManager erstellt hast, hast du doch die Information drin, mit der du vergleichen willst?


Richtig. In diesem Fall brauche ich die Informationen die über das Feld manDepartment erstellt worden sind.

Werde mich morgen wieder mit dem Thema beschäftigen, hab' mit einem Kollegen den ganzen Tag Besuch von extern. Aber da gibt's wenigstens Kaffee für umsonst.
Gruß Ulli

Offline Sommersprosse

  • Senior Mitglied
  • ****
  • Beiträge: 296
  • Geschlecht: Weiblich
Re: Hide When auf ein Feld anwenden.
« Antwort #18 am: 17.07.08 - 14:48:23 »

Hatte heute mal wieder Zeit, mich bissle mit meinem Workflow zu beschäftigen. Bernhard, du hattest ja von zwei Lösungswegen gesprochen und ich habe mich dann mal mit @DBColumn und @DBLookup befasst. Ich hatte mir zwischenzeitlich mal ein Feld gebastelt und die Vorgabewerte mal mit meinen Formel gefüllt um zu sehen, was an Output rauskommt.

Code
@DbLookup("":"NoCache";@DbName;"vwManDepartment";@Name([CN];@UserName);"manDepartment") 
hat soweit funktioniert, das richtig ausgelesen hat und Feld befüllt hat.

Mein letzter Versuch war dann
Code
@If(
  @IsMember(@Name([CN];@UserName);
     @DbColumn("":"NoCache";@DbName;"vwManDepartment";1)
))

Damit funktioniert sogar mein Hide-When Feld  :D :D :D :D

Ich wäre jetzt eigentlich soweit zufrieden, aber.......

Für den Inhalt einer Ansichtsspalte müsstest Du in diesem Konstrukt @dbColumn einsetzen - in zweierlei Hinsicht nicht zu empfehlen: Es wird eine grosse Datenmenge gelesen, und wenn diese dann gar das 64 kB-Limit sprengt ...
Besser wäre in diesem Fall ein !@IsError (@dbLookup ...)

Bezieht sich diese 64kb Grenze auf die ganze Datenbank, oder nur auf das Dokument, das ich abfrage? Mein Dokument wäre wahrscheinlich immer sehr klein, da nicht mehr wie 30 Personen drin stehen werden....

Gruß Ulli

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hide When auf ein Feld anwenden.
« Antwort #19 am: 17.07.08 - 14:57:40 »
Die 64 kb beziehen sich auf den Rückgabewert der Funktion.
Mit @DbColumn liesst du ja eine ganze Spalte einer Ansicht, dabei kann dann die Grenze schnell erreicht sein.

Boris

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz