Autor Thema: Hilfe bei Formel im Listenfeld  (Gelesen 8502 mal)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Hilfe bei Formel im Listenfeld
« am: 24.09.10 - 08:53:08 »
Hallo,

ich bräuchte mal Eure Hilfe bei einer Formel in einem Listenfeld.

Ich habe mehrere (theoretisch beliebig viele) Profildokumente.
Benannt sind diese bspw. test_1, test_2, test_3 usw.
In diesem Profildokument liegt unter anderem das Feld "adressfeld"

In der Auswahl soll nun für alle test_* das adressfeld zur Auswahl stehen.
Erschwerend noch dazu, dass wenn das Feld adresfeld leer ist (" "), dann soll ein Feld aus dem Globalen Adressbuch gezogen werden.

Ist das überhaupt so ohne weiteres möglich? Muss ich eventuell diese Werte irgendwo vorher ermitteln und im Listenfeld dann ranziehen?





Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Hilfe bei Formel im Listenfeld
« Antwort #1 am: 24.09.10 - 09:04:44 »
Ich habe mehrere (theoretisch beliebig viele) Profildokumente.

 ???  ???

Aber nur theoretisch.

In der Regel kann es nur ein datenbankbezogenes Profildokument und eines pro User geben.

Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #2 am: 24.09.10 - 09:08:33 »
Mit einer Schleife müsstest Du das hinbekommen. Sinngemäß so (habe die Befehle nicht im Kopf, deshalb umschreibe ich sie)
 
_liste := "";
_nr := 1;
@Do...
   Hole Schlüsselfeld aus Profil "test" + @Text (_nr)
   Wenn Schlüsselfeld = leer -> Ende der Schleife (Profildokument gibt es nicht)
   Wenn Adressfeld leer -> hole anhand Schlüssel das Feld aus dem globalen Adressbuch
   _liste := _liste : Adressfeld
   _nr := _nr + 1;

@Trim (_liste)

Es könnte sein, dass bei einer Abfrage eines nicht existierenden Profildokuments dieses angelegt wird, das wäre nicht schön. Vielleicht gibt es einen Befehl, mit dem man die Existenz eines Profildokuments abfragen kann? Ich mag keine Profildokumente, deshalb nutze ich die nicht

Nachtrag:

@Do ist natürlich falsch, es muss irgendeine Schleife sein, aber nicht @For, da Du die Anzahl nicht weißt, @While ist wohl richtig
« Letzte Änderung: 24.09.10 - 09:16:20 von Peter Klett »

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #3 am: 24.09.10 - 09:11:37 »
In der Regel kann es nur ein datenbankbezogenes Profildokument und eines pro User geben.

Axel

Wenn ich mir mit NotesPeek z.b. meine Datenbank anschaue, dann sehe unter Profiles eine große Anzahl von Einträgen:

archive database profile
archive profile
breakpoints
calendarprofile
calcolorprofile
calendarsettings
colorprofile
...
inotesprofile
ownercontact1
...

und eben auch schon meine test_1 und test_2

Und mit @GetProfileField("test_1";"addressfeld") greife ich darauf zu.


Vielleicht verwende ich ja nicht die richtige Terminilogie.   :-:

« Letzte Änderung: 24.09.10 - 09:18:07 von schroederk »
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #4 am: 24.09.10 - 09:17:15 »
Mit einer Schleife müsstest Du das hinbekommen. Sinngemäß so (habe die Befehle nicht im Kopf, deshalb umschreibe ich sie)
 
_liste := "";
_nr := 1;
@Do...
   Hole Schlüsselfeld aus Profil "test" + @Text (_nr)
   Wenn Schlüsselfeld = leer -> Ende der Schleife (Profildokument gibt es nicht)
   Wenn Adressfeld leer -> hole anhand Schlüssel das Feld aus dem globalen Adressbuch
   _liste := _liste : Adressfeld
   _nr := _nr + 1;

@Trim (_liste)

Es könnte sein, dass bei einer Abfrage eines nicht existierenden Profildokuments dieses angelegt wird, das wäre nicht schön. Vielleicht gibt es einen Befehl, mit dem man die Existenz eines Profildokuments abfragen kann? Ich mag keine Profildokumente, deshalb nutze ich die nicht


Vielen Dank... das ist schonmal ein guter Ansatz für mich.
Ich hatte befürchtet, dass in diesem Formelfeld für das Listenfeld jede Zeile einem Eintrag entspricht und mir war nicht klar, wie ich so die Einträge dynamisch aufbauen kann.
Die Syntax der Befehle werde ich mir schon erarbeiten können (Die Hoffnung stirbt zuletzt ;) )

Sicherlich sehr sinnvoll, dass es eine Möglichkeit gibt, zu prüfen, ob ein Profildokument existiert, ohne es anzulegen. Sonst würde mit jedem Aufruf ein weiteres Dokument entstanden sein.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #5 am: 24.09.10 - 09:23:26 »
Falls Du meinen Nachtrag nicht gelesen hast: @Do ist quatsch (dachte an Script: Do ... Loop), @While sollte es sein.

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #6 am: 24.09.10 - 09:35:27 »
Falls Du meinen Nachtrag nicht gelesen hast: @Do ist quatsch (dachte an Script: Do ... Loop), @While sollte es sein.
hab ich schon gemerkt, aber danke für den Hinweis.

In der Hilfe steht leider nicht, was passiert, wenn ich bei @GetProfileField ein nicht existierendes angebe.
Vielleicht wird einfach nichts zurückgegeben. Muss ich wohl testen  :-\

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #7 am: 24.09.10 - 10:05:50 »
Hier mein erster Grobentwurf für das Script:
Zitat
_liste := "";
_nr := 0;
_fertig := 0;
@While (_fertig = 0;
   _name = @GetProfileField("test_"+@Text(_nr);"NAME");
   @If( @IsNull(_name);
      _fertig := 1;
      @Do(
         _addy = @GetProfileField("test_"+@Text(_nr);"ADRESSFELD");
         @If(_addy = " ";
            _addy := "TODO: hole aus GAL";
         )
         _liste := _liste : _addy;
         _nr := _nr + 1;
      )
   )
)
@Trim(_liste);

Würde das soweit funktionieren?

Kann mir noch jemand einen Tip geben, wie ich auf den Adressbucheintrag des Benutzers aus diesem Formula-Script heraus zugreifen kann?

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #8 am: 24.09.10 - 10:51:42 »
@If(_addy = " "; ist falsch, richtig -> @If(_addy = "";

Eine leere Adresse wird kein Leerzeichen einthalten, sondern nichts.

Wenn Du im Adressbuch eine Ansicht hast, die in der ersten Spalte den Namen sortiert anzeigt (probier mal $Users, falls es die gibt), holst Du Dir die Daten mittels @DBLookup

Server und Dateiname des Adressbuches würde ich nicht hart eintragen, sondern irgendwie errechnen. Ist es names.nsf auf dem Server?


Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #9 am: 24.09.10 - 11:00:05 »
@If(_addy = " "; ist falsch, richtig -> @If(_addy = "";

Eine leere Adresse wird kein Leerzeichen einthalten, sondern nichts.

Laut NotesPeek ist in dem Feld ein Leerzeichen enthalten. Daher das " ". Aber das sind ja Kleinigkeiten ;)


Wenn Du im Adressbuch eine Ansicht hast, die in der ersten Spalte den Namen sortiert anzeigt (probier mal $Users, falls es die gibt), holst Du Dir die Daten mittels @DBLookup

Server und Dateiname des Adressbuches würde ich nicht hart eintragen, sondern irgendwie errechnen. Ist es names.nsf auf dem Server?

Richtig. Die names.nsf auf dem Server, auf dem sich auch der User befindet.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #10 am: 24.09.10 - 12:40:54 »
Da scheint es noch einen syntaktischen Fehler zu geben, da mir Notes meldet, es würden noch Argumente für die Funkion fehlen und stellt sich auf das Ende vom @Do.

So sieht das Teil im Moment aus:

Zitat
_liste := "";
_nr := 0;
_fertig := 0;
_server := @Subset(@DbName; 1);

@While (_fertig = 0;
   _name = @GetProfileField("test_"+@Text(_nr);"NAME");
   @If( @IsNull(_name);
      _fertig := 1;
      @Do(
         _addy = @GetProfileField("test_"+@Text(_nr);"ADRESSFELD");
         @If(_addy = " ";
            _addy := @DbLookup("";_server:"names.nsf";"People"; @Name([CN];Name);"InternetAddress");
         );
         _liste := _liste : _addy;
         _nr := _nr + 1;
      )
   )
)
@Trim(_liste);

Glaubt er nun, dass ihm der Else-Zweig vom @If fehlt oder ist die Syntax vom @Do falsch?
« Letzte Änderung: 24.09.10 - 12:42:44 von schroederk »
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #11 am: 24.09.10 - 12:49:02 »
Auf jeden Fall fehlt hier schon mal der Else-Zweig:
@If(_addy = " ";
            _addy := @DbLookup("";_server:"names.nsf";"People"; @Name([CN];Name);"InternetAddress");
         );

Bernhard

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #12 am: 24.09.10 - 13:12:57 »
Ups, den hatte ich schon korrigiert gehabt:

@If(_addy = " ";
            _addy := @DbLookup("";_server:"names.nsf";"People"; @Name([CN];Name);"InternetAddress");
            @Nothing
         );
« Letzte Änderung: 24.09.10 - 13:15:07 von schroederk »
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #13 am: 24.09.10 - 13:18:25 »
@Nothing kannst Du dort nicht verwenden. Ersetze das durch einen Leerstring.

Bernhard

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #14 am: 24.09.10 - 13:21:53 »
Rein syntaktisch hatte er diese Stelle nicht mehr angemeckert.

Habs jetzt mal so geschrieben, schreit aber immer noch an der Klammer zu vom @Do.

@If(_addy = " ";
            _addy := @DbLookup("";_server:"names.nsf";"People"; @Name([CN];Name);"InternetAddress");
            _addy := "nicht gefunden!"
         );

Meldung: Argumente für @Funktionen erwartet aber nicht vorhanden: ")"
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #15 am: 24.09.10 - 13:37:04 »
Das ist noch falsch, weil keine Zuweisung:
_addy = @GetProfileField("test_"+@Text(_nr);"ADRESSFELD");

Das hier steht jetzt innerhalb der @Do-Anweisung, was sicherlich auch nicht gewollt ist:
 _nr := _nr + 1;
Und das dort abschliessende Semikolon führt zu Deiner Fehlermeldung - Du kündigst mehr Code an, der aber gar nicht kommt.

HTH,
Bernhard


Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #16 am: 24.09.10 - 13:45:13 »
Das ist noch falsch, weil keine Zuweisung:
_addy = @GetProfileField("test_"+@Text(_nr);"ADRESSFELD");
Dieser miese kleine Fehlerteufel. Wäre mir wohl nie aufgefallen. Und der Designer hat auch nichts gesagt  :(

Das hier steht jetzt innerhalb der @Do-Anweisung, was sicherlich auch nicht gewollt ist:
 _nr := _nr + 1;
Und das dort abschliessende Semikolon führt zu Deiner Fehlermeldung - Du kündigst mehr Code an, der aber gar nicht kommt.

Das ist eigentlich schon so gewollt, da er ja nur hochzählen muss, wenn noch ein Profil-Dokument gefunden wurde. Würde aber auch nicht stören, wenn nicht.
Wenn ich das Semikolon weglasse, dann lautet die Fehlermeldung so:

Ein Operator oder Semilkolon wurde erwartet, aber nicht gefunden: ")" und stellt sich diesmal auf das @Trim


Edit: Ich habs, der @While benötigte auch noch ein Semikolon am Klammerende. Muss mich echt noch an diese Strukturen von Lotus Formula gewöhnen  :-[
« Letzte Änderung: 24.09.10 - 13:47:13 von schroederk »
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #17 am: 24.09.10 - 15:25:29 »
Das Script sieht jetzt so aus und funktioniert schonmal soweit:

Zitat
_liste := "";
_nr := 0;
_fertig := 0;
_server := @Subset(@DbName; 1);

@While (_fertig = 0;
 _name := @GetProfileField("test_"+@Text(_nr);"NAME");
 @If( @IsNull(_name);
  _fertig := 1;
  @Do(
   _addy := @GetProfileField("test_"+@Text(_nr);"ADRESSFELD");
   @If(_addy = " ";
    _addy := @DbLookup("";_server:"names.nsf";"($Users)"; @DbTitle;"InternetAddress");
    ""
   );
   _liste := _liste : _addy;
   _nr := _nr + 1
  )
 )
);
@Trim(_liste)

Ändern musste ich noch die Suche im Globalen Adressbuch. Die View People funktionierte nicht, mit ($Users) gehts.

Ich suche nach @DBTitel, um die Internet Adresse des Datanbank-Eigentümers herauszubekommen.
@UserName sucht mir ja nach dem aktuellen Benutzer der Datenbank, der nicht der Eigentümer sein muss.

Allerdings geht die Sache sicherlich schief, wenn mal der DB-Name geändert werden sollte. Kann ich sonst noch wie den Namen des DB-Owners herausbekommen?
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe bei Formel im Listenfeld
« Antwort #18 am: 24.09.10 - 15:35:39 »
Was sind denn das für Datenbanken? Mail-DBs?

Bernhard

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Hilfe bei Formel im Listenfeld
« Antwort #19 am: 24.09.10 - 15:48:24 »
Korrekt. Ausschließlich Mail-DBs.

Frage am Rande. Gibt es denn nicht bei jeder Datenbank sowas wie einen Owner?
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz